Results 1 to 3 of 3
Hello,
I have my two main files:
main.h
#include <jni.h>
// Load libs
#ifdef DARWIN // MacOSX
#include "os/darwin/darwin_os.h"
#elif LINUX // Linux
#include "os/linux/linux_os.h";
#endif // End
main .cpp
...
- 11-07-2009 #1Just Joined!
- Join Date
- Jun 2009
- Posts
- 4
g++ linking
Hello,
I have my two main files:
main.h
#include <jni.h>
// Load libs
#ifdef DARWIN // MacOSX
#include "os/darwin/darwin_os.h"
#elif LINUX // Linux
#include "os/linux/linux_os.h";
#endif // End
main .cpp
.... (JNIEnv *env, jobject jobj) {
// idea being that depending on the header loaded it will return the cpu load depending on the OS.
return cpu();
}
linux_os.h
....
linux_os.cpp
double cpu() {
return 23.3;
}
I am currently,
g++ -Wall -c os/linux/linux_os.cpp
then,
g++ -Wall -fPIC -shared -I /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/include -I /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/include/linux/ linux_os.o -c main.cpp
which returns
error: ‘cpu’ was not declared in this scope
I am clearly missing something with linking the libraries. Help is greatly appreciated. Thanks.
- 11-07-2009 #2
Just what the compiler says.
cpu isn't declared when compiling main.cpp.
You resolve this by putting a function prototype in linux_os.h and #include it in main.cpp.
No. If you use the -c option or there was a problem with compiling, you don't get to the linking stage.I am clearly missing something with linking the libraries.Debian GNU/Linux -- You know you want it.
- 11-08-2009 #3Just Joined!
- Join Date
- Jun 2009
- Posts
- 4
Hello,
Thank you for your reply, the g++ is now working fine. However the complier is throwing out:
g++: linux_os.o: linker input file unused because linking not done
Any ideas? Thanks.
P.s. I have read the thread to do with this error already posted on this forum.


Reply With Quote
