Jnative java调用c/c++ dll运行出错,提示找不到方法,怎么解决啊

如;C++dll为mydll.dll。_declspec(dllexport)intadd(inta,intb){returna+b;}_declspec(dllexpo... 如;C++ dll为mydll.dll。
_declspec(dllexport) int add(int a,int b)
{
return a+b;
}
_declspec(dllexport) int subtract(int a,int b)
{
return a-b;
}
我想在Java中调用add()方法,具体怎么实现。
展开
 我来答
hr_vision
2011-06-02 · TA获得超过260个赞
知道小有建树答主
回答量:231
采纳率:100%
帮助的人:168万
展开全部
JNI(java native interface)
关键字native

本质上是java代码调用本地动态链接库

JNI使用的工具:bin/javah.exe

测试代码:
public class Test
{
//使用static块来加载动态链接库
static {
System.loadLibrary("HelloWorld"); //不要加.dll后缀,有java系统自动判断后缀
}

public native void output();

public static void main(String[] args) {
Test test = new Test();
test.output();

/*
System.loadLibrary(HelloWorld);
//等价于
Runtime.getRuntime().loadLibrary("HelloWorld");
*/
}
}

编译好后,在命令行上用javah Test生成对应的Test.h
然后使用C/C++编写工具,使用vs2008,创建一个win32工程,生成dll文件
在这里需要配置jdk/include/目录和jdk/include/win32目录的头文件包含到vc工程(或者直接将两个头文件jni.h和jni_md.h拷贝到工程即可)
将生成的Test.h和jni.h包含到工程
JNIEXPORT void JNICALL Java_Test_output
(JNIEnv *, jobject);
并实现该函数
编译生成dll
将dll文件复制到jdk/bin目录下即可

个人的笔记来的,希望对你有帮助,那个dll文件的位置应该可以改的,我菜鸟,只知道放在jdk/bin下可以
追问
你能给出你的dll代码吗,
我依照你的方法试试,我弄了几天了,都不行,我从jna到jnative都没成功。
谢谢了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
危献e3
2011-06-02 · TA获得超过2053个赞
知道大有可为答主
回答量:2738
采纳率:0%
帮助的人:1954万
展开全部
应该这样 extern "C" __declspec(dllexport) int add(int a,int b)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-06-02
展开全部
不会出错。
追问
我在运行java时提示,找不到我方法,如add();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式