首頁 電腦教學 電腦知識 編寫供JAVA呼叫的DLL的VC實作方法

編寫供JAVA呼叫的DLL的VC實作方法

Jan 22, 2024 pm 04:57 PM

編寫供JAVA呼叫的DLL的VC實作方法

如何用VC寫一個供JAVA呼叫的DLL

}(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, s​​trlen(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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

如何修復蒸汽雲錯誤?嘗試這些方法 如何修復蒸汽雲錯誤?嘗試這些方法 Apr 04, 2025 am 01:51 AM

蒸汽雲錯誤可能是由於許多原因引起的。要順利玩遊戲,您需要採取一些措施來刪除此錯誤,然後才能啟動遊戲。 PHP.CN軟件在這篇文章中介紹了一些最佳方法以及更多有用的信息。

Windows元數據和Internet服務問題:如何解決? Windows元數據和Internet服務問題:如何解決? Apr 02, 2025 pm 03:57 PM

您可能會看到“無法建立與Windows Metadata和Internet Services(WMI)的連接”。事件查看器的錯誤。 PHP.CN的這篇文章介紹瞭如何刪除Windows元數據和Internet服務問題。

如何解決KB5035942更新問題 - 崩潰系統 如何解決KB5035942更新問題 - 崩潰系統 Apr 02, 2025 pm 04:16 PM

KB5035942更新問題 - 用戶通常發生崩潰系統。受到的人們希望找到擺脫困境的出路,例如崩潰系統,安裝或聲音問題。針對這些情況,這篇文章由Php.cn Wil發表

刪除PC App Store惡意軟件 - 適合您的完整指南! 刪除PC App Store惡意軟件 - 適合您的完整指南! Apr 04, 2025 am 01:41 AM

如果您在計算機上有一個名為PC App Store的程序,並且沒有故意安裝它,則可能會感染惡意軟件。 PHP.CN的這篇文章介紹瞭如何刪除PC App Store惡意軟件。

修復 -  OneDrive不在PC上上傳照片 修復 - OneDrive不在PC上上傳照片 Apr 02, 2025 pm 04:04 PM

OneDrive是Microsoft的在線雲存儲服務。有時,您可能會發現OneDrive無法將照片上傳到雲。如果您在同一條船上,請繼續閱讀PHP.CN軟件的帖子,以獲取有效的解決方案!

修復:兄弟:兩個兒子重製的故事不推出/加載 修復:兄弟:兩個兒子重製的故事不推出/加載 Apr 02, 2025 am 02:40 AM

兄弟是:兩個兒子重製的故事沒有發起嗎?遇到兄弟:兩個兒子重製黑屏的故事?在這裡,有關PHP.CN的這篇文章為您提供了測試的解決方案,以幫助您解決此問題。

如何使用Chris Titus工具創建Debloated Win11/10 ISO 如何使用Chris Titus工具創建Debloated Win11/10 ISO Apr 01, 2025 am 03:15 AM

Chris Titus Tech具有稱為Windows實用程序的工具,可以幫助您輕鬆地創建Debloated Windows 11/10 ISO安裝乾淨的系統。 PHP.CN提供了有關如何使用Chris Titus工具完成此操作的完整指南。

MSCONFIG不斷恢復為選擇性啟動嗎? 2個解決方案 MSCONFIG不斷恢復為選擇性啟動嗎? 2個解決方案 Mar 28, 2025 pm 12:06 PM

您是否質疑Msconfig不斷恢復到窗口上的選擇性啟動的問題?如果需要,如何切換到普通啟動?嘗試在此php.cn帖子中解釋的方法,以找到適合您的方法。

See all articles