JNI Java-to-C ++调用在Eclipse中构建时有效,但在通过命令行构建时则无效

时间:2011-12-09 20:39:39

标签: android eclipse ant java-native-interface static-libraries

函数调用在.so文件中实现。当我从命令行构建时,当代码尝试从Java调用本机函数时,我得到UnsatisfiedLinkError(C-to-Java正常工作)。最奇怪的是,当我驱逐调用并获得指向它们的指针时,指针有效,然后仍然会发生UnsatisfiedLinkError。

我想主要的问题是,Eclipse做了什么命令行没有(反之亦然)?我很茫然,需要让它工作,因为其他开发人员和构建服务器无法通过Eclipse构建。

另一个问题是,在使用这种机制时(在Android中)如何找到和调用函数?我读了一些关于此的信息,但没有任何帮助我解决这个问题。

由于它在Eclipse中运行,我相信我的JNI命名约定是正确的。

我已经在网上看了很多,但似乎无法得到一个好的答案。

仅供参考,.so文件包含在APK文件中(看起来几乎相同),它是唯一的.so文件。

1 个答案:

答案 0 :(得分:1)

如何编译.so个文件?您是否将-fvisibility=hidden标志传递给g ++(前提是您使用g ++进行编译)?并-fPIC