JNI 在调用方法时C++不满意的链接错误
JNI C++ UnsatisfiedLinkError When Calling Method
我一直在尝试用C++创建一个简单的JNI测试。对于Java,我使用的是Eclipse,对于C++,我使用的是Visual Studio 2013。我按照StackOverFlow上其他页面上的说明进行操作,但似乎没有任何效果。当我尝试在 C++ 中列出的 java 中调用本机方法时,会发生此错误。
谢谢你的时间。
标题.h
#include <jni.h>;
using namespace std;
#ifndef Header
#define Header
JNIEXPORT void JNICALL Java_base_Main_print(JNIEnv *env, jobject obj);
#endif
编辑了标题.h(有效的解决方案)
#include <jni.h>;
using namespace std;
#ifndef Header
#define Header
extern "C" {
JNIEXPORT void JNICALL Java_base_Main_print(JNIEnv *env, jobject obj);
}
#endif
JNIHelloWorld.cpp
#include "Header.h";
JNIEXPORT void JNICALL Java_base_Main_print(JNIEnv *env, jobject obj) {
printf("This is a JNI testern");
//return;
}
爪哇代码
package base;
public class Main {
static {System.loadLibrary("JNIHelloWorld");}
public static void main(String args[]){
Main m = new Main();
m.print();
}
public native void print();
}
错误
Exception in thread "main" java.lang.UnsatisfiedLinkError: base.Main.print()V
at base.Main.print(Native Method)
at base.Main.main(Main.java:9)
尝试在
JNI代码周围 #extern"c"{}。
通过查看 DLL 的导出进行验证,以查看未涉及C++名称重整。
相关文章:
- 编译器找不到链接的 OpenCV 库
- JNI 不满意链接错误: 动态链接库 (DLL) 初始化例程失败
- Eclipse/MinGW 不会链接库
- 与好友运算符接口<<:为什么不能链接?
- 为什么需要双指针来更改头部,而不是链接列表中的其他地方
- 关于在 ndk r15 中的类中初始化的静态成员的不满意链接错误
- 交叉围栏GCC:在检查动态链接器特征时,在GCC_NO_EXECUTABLES之后不允许链接测试
- 发生 JNI 调用 c++ dll "不满意链接错误: 对内存位置的无效访问"
- 非实例化模板成员的编译时错误,而不是链接时错误
- log4cxx构建并编译,但运行时会出现不满足链接异常
- JNA 和 C++ - 导致不满意链接错误的简约示例
- 使用Windows函数SendMessage会导致与MSVC发生链接错误,但与MinGW不发生链接错误
- 在运行时找不到链接库 (c++)
- 可以在不设置链接器>常规>附加库目录的情况下搜索哪种 dll 或 lib
- JNI HellowWorld 不满意链接错误 找不到依赖库
- 为什么头部不改变 - 链接列表实现
- ExceptionInInitializerError Android NDK由以下原因引起:不满足链接错误:findL
- Java中的不满足链接错误,来自JNI
- 如何将.cpp文件编译为对象文件而不调用链接器
- 不能链接dbus和c++