我有一個需要在Java中使用的C#dll。該dll附帶一個.chm文件,概述了類的方法/字段。在做完研究之後,我決定最好的方法是創建一個C++ cli包裝器,並從那裏使用JNI來獲得我需要的Java。在沒有第三方庫的情況下使用Java中的C#DLL
類被設計爲使用的方法是像
MyCSharpClass myC = MyCSharpClass.Instance; //Instance is a static field of MyCSharpClass
myC.setState("ON"); // Accepts a string, returns an int
myC.getNetwork(); // Returns a string
實例是一個靜態字段,和兩個方法調用返回有INT。
我試圖立足我的包裝在這裏下車的例子:http://pragmateek.com/using-c-from-native-c-with-the-help-of-ccli-v2/
我沒有問題,使用JNI調用到從Java C++ CLI DLL,除了當我試圖將類實例在C++ cli中的C#實例JVM崩潰。
_private->myCSharpClass= gcnew MyDLL::MyCSharpClass();
不起作用,因爲該類沒有構造函數和
_private->myCSharpClass= MyDLL::MyCSharpClass::Instance;
也不起作用。
我很迷茫什麼去做。我讀了幾個小時的帖子和例子,但沒有取得任何真正的成功任何幫助將非常感激。
你能更具體地說明爲什麼'myCSharpClass = MyDLL :: MyCSharpClass :: Instance;'不起作用嗎? –
當我實例化MyCSharpClassWrapper以在JNI方法中使用時,Java中的調用導致JVM崩潰。我不記得它說的確切消息。 – GuardTheSun