函数调用在.so文件中实现。当我从命令行构建时,当代码试图从Java调用本机函数(C-to-Java工作正常)时,我会得到UnsatisfiedLinkError。最奇怪的是,当我外部调用并获得指向它们的指针时,指针是有效的,然后UnsatisfiedLinkError仍然发生。
我想主要的问题是,Eclipse做了哪些命令行做不到的事情(反之亦然)?我不知所措,需要让这个工作,因为其他开发人员和构建服务器无法通过Eclipse构建。
另一个问题是,当使用这种机制(在Android)时,如何找到和调用函数?我读了一点这方面的资料,但没有什么能帮助我解决这个问题。
因为它在Eclipse中工作,所以我确信我的JNI命名约定是正确的。
我在网上查阅了相当广泛的资料,但似乎找不到一个好的答案。
供参考,.so文件包含在APK文件中(看起来几乎相同),它是唯一的。so文件。
如何编译您的.so
文件?您是否将-fvisibility=hidden
标志传递给g++(如果您使用g++进行编译)?-fPIC
?