搜索
首页电脑教程电脑知识编写供JAVA调用的DLL的VC实现方法

编写供JAVA调用的DLL的VC实现方法

编写供JAVA调用的DLL的VC实现方法

}(2)编译该java文件,再编译生成头文件(供vc使用)javac GB2PY.java //编译生成class(3)在当前文件夹下创建 com/bw/gb2py 文件夹,将GB2PY.class放入该文件夹,回到当前文件夹,调用javah命令生成头文件。javah com.bw.gb2py.GB2PY //生成头文件,文件名为com_bw_gb2py_GB2PY.h注意头文件中的内容不能更改,否则生成的dll不能使用(4)在VC中新建名为GB2PY的Win32 dll工程,将com_bw_gb2py_GB2PY.h拷贝到工程目录下,并加入工程。再拷贝%JAVA_HOME%/include/jni.h 和 %JAVA_HOME%/include/win32/jni_md.h 到工程目录下,并加入工程。(5)实现com_bw_gb2py_GB2PY.h中声明的方法:Java_com_bw_gb2py_GB2PY_GetPY。注意java string和c中char的转换。java的string都用unicode编码(双字节),而char是单字节的。int (*GetPY)(char* szGBString,PY &oPY);JNIEXPORT jstring JNICALL Java_com_bw_gb2py_GB2PY_GetPY

(JNIEnv * env, jclass, jstring name){static HMODULE hModle = LoadLibrary("PYconvert.dll"); //第三方dll

GetPY = (LPFUN)GetProcAddress(hModle,"GBToPY");int len;char charName[128];

char charPY[512];

len = env->GetStringLength(name) * 2 + 1; //双字节长度转为单字节长度,加1是为了加结束符

memset(charName, 0, len);

const wchar_t * w_buffer = env->GetStringChars(name, 0);

int wlen = wcslen(w_buffer);

len = WideCharToMultiByte(CP_ACP, 0, w_buffer, wcslen(w_buffer) + 1, charName, len, NULL, NULL);

env->ReleaseStringChars(name, w_buffer);//以上代码将java string name中的内容拷贝到了char数组charName中... //省略部分功能代码,通过调用第三方的dll函数将汉字转换为拼音,存储在charPY数组中 int slen = strlen(charPY);

jchar * buffer = new jchar[slen];

len = MultiByteToWideChar(CP_ACP, 0, charPY, strlen(charPY), buffer, slen);

if (len > 0 & len

buffer[len] = 0;//以上代码将char型字符串转换为jchar型字符串 jstring js = env->NewString(buffer, len);

delete [] buffer;return js;}(6)编译生成dll文件,在java中就可以调用了(要用到第二步生成的类)!:)

怎么为VC写的EXE文件写一个DLL文件让这个EXE调用DLL

你是说要怎么写dll?,还是怎么调用你写的dll?

怎么写dll:vc++6.0的话,在创建新工程时常用的选择以下任意一个:

MFC AppWizard[dll] 可以使用MFC框架的动态连接库

Win32 Dynamic-link Library window32位标准动态库

然后选择你需要的框架,然后完成,基本的dll就这样好了。

vs2003及其以上版本(vs2010没用过,不提)的话,创建新

工程常用的有以下两种:

MFC->MFC Dll

Win32->任意一个->在弹出的对话框中选择Dll选项

其它选项看自己的需。然后完成,基本的dll就这样好了。

调用你写的dll:在需要调用的地方使用LoadLibrary("xxx.dll");

xxx.dll是你编写的dll,然后如果你在xxx.dll中编写了

接口的话,可以用以下方法调用dll中的方法:

1、在你的exe工程中包含dll的接口头文件,比如接口函数为void FunName(int a);

2、typedef void(*Func)(int);//定义接口

3、在需要调用的地方使用:

.......................

HMOUDLE hMyDll = LoadLibrary("xxx.dll");

if (hMyDll != NULL)

{

Func *pDllFun=(Func *)::GetProcAddress(hMyDll,"FunName");//FunName就是你Dll中的接口函数

if (pDllFun != NULL)

{

pDllFun(1);//调用Dll中函数

}

}

4、在不需要Dll的时候,卸载Dll。FreeLibrary(hMyDll);

//////////////////////////////////////////////////////

你的Dll有没有生成到exe所在的目录下?

以上是编写供JAVA调用的DLL的VC实现方法的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:Excel办公网。如有侵权,请联系admin@php.cn删除
在启动时接收NVVSVC.EXE运行时错误?在这里看!在启动时接收NVVSVC.EXE运行时错误?在这里看!Apr 11, 2025 am 12:50 AM

您在启动时会遇到NVVSVC.EXE运行时错误吗?更糟糕的是,你们中的一些人可能最终会出现黑屏。因此,您迫切需要尽快删除此错误。在PHP.CN网站上的本指南中,我们收集了一些可行的SOL

Windows P的高级提示不适用于WindowsWindows P的高级提示不适用于WindowsApr 11, 2025 am 12:49 AM

如果您有多个显示器,则必须熟悉Windows P快捷方式。但是,窗口P无法正常工作,可能会偶尔发生。如果您面临此问题,则PHP.CN的这篇文章确实可以为您提供帮助。

如果Acronis克隆未能从磁盘中读取数据怎么办?如果Acronis克隆未能从磁盘中读取数据怎么办?Apr 11, 2025 am 12:48 AM

Acronis克隆的问题未能从磁盘中读取数据,通常会在克隆过程中出现。面对这个无聊的问题,您该怎么办?尝试修复它。或者,您可以运行Acronis True Image的替代方案 - php.cn软件

文件上传未实现 - 以下是4种方法!文件上传未实现 - 以下是4种方法!Apr 11, 2025 am 12:47 AM

当您尝试从文件夹访问Word文档时,您可能会收到一个错误,该错误在单击它后才说“未实现”。来自PHP.CN的这篇文章介绍了如何修复“未实现的文件上传”问题。

Windows中的AI:Windows中的AI驱动功能Windows中的AI:Windows中的AI驱动功能Apr 11, 2025 am 12:46 AM

微软已经在AI上投入了大量的人力和财政资源,并取得了出色的成果。在这篇文章中,PHP.CN将在Windows中谈论AI,包括Windows 11和Windows 10中的AI工具和功能。

如何使用Windows 10 0x80070643错误的PowerShell脚本错误?如何使用Windows 10 0x80070643错误的PowerShell脚本错误?Apr 11, 2025 am 12:45 AM

KB5034441无法使用错误代码0x80070643安装?来自Microsoft的Windows 10 0x80070643的PowerShell脚本有助于自动化更新Winre分区以修复Bitlocker安全功能旁路漏洞。 php.cn向你指导你

在哪里可以找到矛盾:操作galuga在PC上保存文件位置在哪里可以找到矛盾:操作galuga在PC上保存文件位置Apr 11, 2025 am 12:44 AM

Contra:Galuga行动是由Konami出版的新发行的射手视频游戏。在这里,PHP.CN软件上的这篇文章重点关注Contra:操作Galuga保存文件位置,并说明如何备份Contra:操作Galuga保存文件。

无法在Microsoft Word中突出显示文字吗?在这里经过验证的方式无法在Microsoft Word中突出显示文字吗?在这里经过验证的方式Apr 11, 2025 am 12:43 AM

Microsoft Word为我们所有人提供了许多有用的功能,包括突出显示文本。但是,有些人最近遇到了一个问题,即他们无法用Microsoft Word强调文本。这个问题给他们带来了不便。如果你是其中之一

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境