|
|
1
40
loadLibrary可以使用有效名称加载本机库。举例来说,lib XXXX年 .so对于linux系列,应该将hellolib.so重命名为libhello.so。 顺便说一下,我用jni开发java,我将实现和本机接口(.c或.cpp)分开。
实现头(HelloImpl.h):
Hello.c(我更喜欢用c编译jni):
最后,我们可以通过以下步骤编译它们:
在步骤2中,我们使用g++来编译它。这很重要。你能看见 How to mix C and C++ 编译完成后,可以用nm检查函数命名:
|
|
|
2
31
最后我的代码起作用了。 我是hello.java
您应该将其编译为:
这是
这是
最后运行这个:
|
|
|
3
5
这抱怨C++符号不可用。我似乎记得,当我一直使用JNI的时候,在C++库中有问题,我们总是坚持普通的C 如果更改代码使其成为标准C(并重命名文件):
然后编译它
它起作用了
|