註冊 | 登入 | 全文檢索 | 排行榜 |
» JWorld@TW
» Java SE 討論區
![]() ![]() |
![]() ![]() ![]() ![]() |
本主題所含的標籤 |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:vincentwei] |
scottlai
![]() ![]() ![]() ![]() ![]() ![]() 發文: 136 積分: 4 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() *.cpp extern "C" { JNIEXPORT .... ....... ...... } ![]() ![]() |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:newworld] |
chen
![]() ![]() ![]() ![]() ![]() ![]() 發文: 62 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() newworld先進~~ 真的是謝謝您的指教,經由您的文章,小弟真的在jni的了解上,又多了一層認識,像您這樣不吝惜的將您所了解的,與大家來分享,相信這亦是社群的真正本質,也相信經由您的分享,在社群裡面,必定會有更多的先進一同來為台灣的軟體產業貢獻自己的心力~~^^ ![]() ![]() |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:vincentwei] |
foxty
![]() ![]() ![]() ![]() ![]() ![]() 發文: 4 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 我也非常感谢 newworld 写出这篇帖子,让我实质性的了解到JNI。谢谢! ![]() ![]() |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:vincentwei] |
alpha_dyz
![]() ![]() ![]() ![]() ![]() ![]() 發文: 34 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 谢谢你! ![]() ![]() |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:vincentwei] |
tomorrovvv
![]() ![]() ![]() ![]() ![]() ![]() 發文: 1 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 非常感謝, 如果要引入繫統的DLL應該也是一樣的吧? ![]() ![]() |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:vincentwei] |
hyj_dx
![]() ![]() ![]() ![]() ![]() ![]() 發文: 16 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 这是自己写c++文件, 如果调用别人已经编译好的.dll文件,给你接口,怎么去实现 ![]() ![]() |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:hyj_dx] |
Duncan
![]() 還隱隱作痛 版主 ![]() 發文: 7816 積分: 39 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() hyj_dx wrote: 不考慮 MSVM。 如果 third-party dll 只是一般的 dll 沒有遵照 JNI native function 的命名規則,你就必須自己寫 native method,然後在 JNI function 裡去使用 third-party dll。 ![]() ![]() 給我 辣味豆腐 其餘免談 |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:vincentwei] |
hyj_dx
![]() ![]() ![]() ![]() ![]() ![]() 發文: 16 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 我说的就是没有遵照jni native function 的命名规则的dll档, 也就是怎么在自己写的native method 再去调用dll档 ![]() ![]() |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:hyj_dx] |
Duncan
![]() 還隱隱作痛 版主 ![]() 發文: 7816 積分: 39 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() hyj_dx wrote: 如果別人有一併給你 import library(就是給你一個 xxx.dll 與一個對應的 xxx.lib),你撰寫自己的 JNI function(for native method) 裡去 call dll 裡的函式,就如同你使用一般的 library 一樣。 若是沒有給 import library,你得用 win32 的 LoadLibrary 去打開 dll,然後以 GetProcAddress 取得函式在 dll 裡的位置,透過 function pointer 來 invoke 此函式。 ![]() ![]() 給我 辣味豆腐 其餘免談 |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:vincentwei] | ||||||
bgyeats
![]() ![]() ![]() ![]() ![]() ![]() 發文: 197 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 求救 有一個java 呼叫 dll 問題 我現在有一隻asp,我要把他翻成Java版.. 這一隻dll的功能是呼叫他會回傳一個字串回來 但是他的用法很奇怪..明明是UCCom.dll 但是他卻用 CreateObject ("UCCom.UCQuery")
我看了上面各位的說明 所以寫了一隻class
然後再jsp 要去用它
可以new class 起來 但是在呼叫 GetCode() 的時候就會有問題 但是目前asp是可以正常運作的 我現在的疑問是 1.我的class 有沒有寫錯 loadLibrary("UCCom") ?? or loadLibrary("UCCom.UCQuery")?? 2. method 的用法對不對?? 感謝各位大大 ![]() ![]() |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:bgyeats] |
Duncan
![]() 還隱隱作痛 版主 ![]() 發文: 7816 積分: 39 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() bgyeats wrote: UCCom.dll 是某 COM 元件的實做,並不是包 JNI native function,不是你那樣寫就可以用。 你必須寫一個 DLL 放 native method 的實做部分,在 native method 裡透過 UCCom.dll 建立 COM 元件來用。 但我認為你可以考慮使用 Jacob 來使用 COM object,這樣你就不需要自己用 C/C++ 去寫 JNI function 製 DLL(由 Jacob 做掉)。 ![]() ![]() 給我 辣味豆腐 其餘免談 |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:vincentwei] |
bgyeats
![]() ![]() ![]() ![]() ![]() ![]() 發文: 197 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 感謝 Duncan 大大 我去研究一下 Jacob ![]() ![]() |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:newworld] |
mawmawmaw
![]() ![]() ![]() ![]() ![]() ![]() 發文: 42 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 請問一下 我在執行最後一個動作時(java xxxx) 出現了下列錯誤 請問我少做什麼嗎 ![]() ![]() ![]() ![]() |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:mawmawmaw] | ||
Duncan
![]() 還隱隱作痛 版主 ![]() 發文: 7816 積分: 39 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() mawmawmaw wrote: 錯誤訊息已提到:依照 java.library.path 指定的目錄裡找不到 hello 檔案。 在執行 java.exe 前先設定環境變數 PATH 使其包含你的 dll 檔案所在的"目錄"(檔案夾);或是在執行 java.exe 時指明 java.library.path property。
![]() ![]() 給我 辣味豆腐 其餘免談 |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:vincentwei] |
mawmawmaw
![]() ![]() ![]() ![]() ![]() ![]() 發文: 42 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 搭個順風車 我在製作header檔時出現了一些問題 我有把class檔所在的folde加入path 但是還是一樣 請問要如何解決 ![]() ![]() ![]() ![]() |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:mawmawmaw] |
Duncan
![]() 還隱隱作痛 版主 ![]() 發文: 7816 積分: 39 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() mawmawmaw wrote: 請設定好 classpath 環境變數,或是在執行 javah.exe 時以 -classpath option 指明。 ![]() ![]() 給我 辣味豆腐 其餘免談 |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:Duncan] |
mawmawmaw
![]() ![]() ![]() ![]() ![]() ![]() 發文: 42 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() Duncan wrote: 原來是要在administrator的使用者變數設classpath才會成功 設在系統變數的classpath會一樣的結果 多謝Duncan大大 ![]() ![]() |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:vincentwei] |
mawmawmaw
![]() ![]() ![]() ![]() ![]() ![]() 發文: 42 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 請問一下 如果現在我要呼叫的 C++ code function 如下: int j_call_c::test(){...} 那在 java 的部份應該如何寫 才可呼叫到 test() ![]() ![]() |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:Duncan] | ||
echung
![]() ![]() ![]() ![]() ![]() ![]() 發文: 14 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() Duncan wrote: 我參考藍色小舖裡的程式碼想去打開dll,但vc++回應如下的錯誤! 請問是我少include了什麼嗎?謝謝!
程式碼如下:(裡頭中文字串處理是引用duncan撰寫,因為沒有寫過c++所以整段是到處拚湊出來的,如有錯誤煩請指教)
![]() ![]() |
作者 | Re:請問JNI運用在JAVA 與 c++該如何作DLL檔? [Re:echung] |
opq123520
![]() ![]() ![]() ![]() ![]() ![]() 發文: 3 積分: 0 ![]() |
![]() ![]() ![]() ![]() ![]() ![]() ![]() 完成這些前置動作之後,再來將我們剛剛產生的HelloWorld.h加入我們的Header Files中,並新增一個.c的檔案HelloWorldImp.c,然後到上方的功能表中Build選則'Build hello.dll',然後你將會得到一個hello.dll在專案目錄下的Debug\hello.dll,到此為止,如果順利你應該的到dll檔 上述只說到if 但是小弟我發生了else 這段小弟我有個問題 HelloWorld.h加入我們的Header Files中 這個步驟能說清楚一點嗎? 找不到Header Files 也不知道要怎樣把HelloWorld.h加入我們的Header Files中 因為專題需要把java跟c互通 也剛剛開始學習jni 程式還處於很嫩的階段 麻煩各位大大指導小弟學習一下 ※hello.dll - 3 error ![]() ![]() ![]() ![]() |
» JWorld@TW » Java SE 討論區 |
![]() ![]() ![]() ![]() |
![]() ![]() ![]() |