java调用C++ dll(已有dll,没有lib)

本文介绍如何通过Java调用C++生成的DLL文件,包括编写Java类、生成.h文件及其实现过程,并解决调用时出现的中文乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 部署java webservice 引用:http://676744379-qq-com.iteye.com/blog/759744

近期总结:

1、java调用C++ DLL

1)编写java类。例如 testdll.java,声明要使用的方法:

public class testdll{
static {
System.loadLibrary("translateec");//translateec.dll是自己生成的dll用来调用已存在的dll
}
public native static byte[] transetoc(byte[] sourceString);
}

2)javac testdll.java 生成.class文件

3)javah -classpath E:\testjava -jni com.package.testdll生成链接的.h文件

进入类所在的目录,“E:\testjava”为testdll的上层目录。com.package为包名。如果使用默认包名直接进入class文件所在目录。javah即可。这样生成 com_package_testdll.h

4)在vs2010中新建C++工程。将.h文件添加到工程中并且在.cpp中实现即调用现存的dll文件

将工程的属性设置输出为dll,在debug文件中找到dll,即为loadLibrary调用的dll

遇到问题:

调用返回中文乱码问题:调查C++和Java的编码方式。(貌似java中是gbk,C++中是utf-8,待考证)

将string类型换成byte[] ,并且传入之前在字符串末尾加“\0"。

将返回的值进行字符转换

到此在java中调用上述生成的dll成功。








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值