我正在尝试在OSX上构建.c文件,但我一直在:
Undefined symbols for architecture x86_64
#include "Test.h"
JNIEXPORT jint JNICALL Java_Test_test
(JNIEnv * env, jclass cls, jbyteArray s, jlong ss, jbyteArray sss, jlong ssss, jbyteArray sssss, jlong ssssss) {
/*printf("Hello World!\n");*/
return 1;
}
内置:
clang++ -o test -I/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/include/darwin Test.cpp
Undefined symbols for architecture x86_64: "_main", referenced from:
implicit entry/start for main executable ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v to see invocation)
我需要安装一些东西吗?
答案 0 :(得分:0)
clang++ -o test Test.cpp
正在尝试编译并链接以生成可运行的可执行文件。您没有定义main()
,所以当它尝试链接CRT代码(调用用户提供的main()
时)时会失败。)
也许您打算使用clang++ -fPIC -shared -o libtest.so Test.cpp -I...
(保持所有其他选项相同),以创建像JNI需要的共享库。或者.dylib
或.jnilib
,通常在您的平台上调用任何库。
如果您正在学习没有告诉您如何编译代码的教程,那么它可能不是一个非常好的教程,您应该找到更好的文档。