2017-12-18 244 views
0

我必須將一些用作DLL的VB6工具轉換爲另一種語言。 因爲我對C++不是很熟悉,並且有從Java應用程序中構建DLL的選項,所以我決定用Java編寫它。Java(JNA)通過dll引用

問題: 在原始的VB6代碼中有一些函數,那些函數通過引用傳遞參數。 因爲這個DLL被用作另一個工具的接口,所以有一些調用它的DLL,它也通過引用傳遞了一些參數。

我發現了一些傳遞參數的方法,所以它們將是可變的,但它們都不適合我的問題,因爲它對於環境離開方法簽名是完美的。

任何想法如何解決那個沒有,改變方法簽名?

PS:大部分byRef傳遞的參數都是字符串。

+0

也許幾個代碼示例將有助於更好地理解 – DaveInCaz

+0

請在您的問題中澄清您正在使用哪些工具調用有問題的DLL 如果您正在討論通過引用接收*參數,當您的工具用作DLL,還請指定您使用哪些工具從Java創建DLL,因爲任何答案都取決於您用於這些任務的具體技術和庫。 – Yaro

+0

我正在嘗試爲Java中的C#程序創建一個DLL。由於我對C++並不熟悉,並且看到可以通過JNI或JNA來完成一些本地的事情,所以我決定用Java來做。 JNA非常適合調用其他DLL的函數,並將所有這些包裝到DLL中。我唯一的問題是參考參數。到目前爲止,我一直無法將C#中的參數傳遞給lib中的Java方法,並在其中更改它的值。這是Java本身的唯一問題。仍在尋找工作。 – sontyp

回答

0

看看這個圖書館在這裏(JNA),這應該讓你做你想做的。

https://github.com/java-native-access/jna

雖然從Java調用的DLL是不是一個很好的選擇,它本來就容易使用C#該任務。

+0

我已經在使用這個調用外部DLL。感謝您的提示,沒有看到,它也有這麼多的參考。 你對這個圖書館有點熟悉嗎? 我發現一個StringByReference類[這裏](https://stackoverflow.com/questions/29162569/jna-passing-string-by-reference-to-dll-but-non-return)的一個很好的例子,但我' m仍然不確定,如果我可以只聲明一個參數爲StringByReference或者一個指針,如果它是一個通過引用傳遞的字符串 – sontyp

+0

對不起,我們的項目最終決定在C#中靜態替換我們需要的DLL(因爲它很容易做到),並將函數作爲webservice(長篇故事)導出,所以我只知道它可能與jna一起使用,但我的工作示例已經消失了大約5年。^^ – Yaro