我正在使用Java作为一个小应用程序.它是对现有MFC项目的重写.我需要更改现有的dll以使用JNI从Java启用访问.所有这些Java的东西对我来说都是新的,所以当我阅读其他论坛帖子时,我遇到了一些麻烦并且感觉相当密集.在现有的DLL中我有这样的函数:
extern "C" __declspec(dllexport) bool Create()
{
return TRUE;
}
Run Code Online (Sandbox Code Playgroud)
愚蠢的提问时间.如何正确设置它以供Java调用?
我试过这个:
JNIEXPORT jboolean JNICALL Create()
{
return TRUE;
}
Run Code Online (Sandbox Code Playgroud)
我包括jni.h,一切都很好.但是,当我从Java调用它时,我得到UnsatisfiedLinkError.我是用Java调用它的:
public static native boolean CreateSession();
System.load("D:\\JavaCallTest.dll");
Create();
Run Code Online (Sandbox Code Playgroud)
有人可以向我推动正确的方向吗?我真诚地感谢任何帮助.
谢谢,
缺口
我发现已经有大约5个答案,尝试了所有这些答案,并没有让它发挥作用.
环境:Ubuntu 12.04/Indigo
运行 - >外部工具 - >外部工具配置...
创建了新的程序位置:/ usr/bin/javah/*$ javah给出/ usr/bin/javah* /
工作目录:$ {workspace_loc:/ MyProject/bin/classes}
属性:-d $ {workspace_loc:/ MyProject/jni} com.myproject.MyActivity
RUN的结果:找不到'com.myproject.MyActivity'的类文件
从终端运行给出相同的结果maxim @ ubuntu:〜/ workspace/MyProject/bin/classes $ javah -jni com.myproject.MyActivity
错误:无法访问android.app.Activity类文件for android.app.Activity not found maxim @ ubuntu:〜/ workspace/MyProject/bin/classes $
安装了SDK/NDK,添加了外部路径.如何添加缺件?谢谢大家.
编辑7月3日
将本机lib加载到单独的类可以解决问题