1
如上所述,當使用JNI調用任意提供的DLL中的類函數時,遇到「未定義的參考錯誤imp _ZN12classNameC1Ev」。我想知道是否名稱不兼容性爲2個不同的編譯器是錯誤的來源?Netbeans(c/C++的MinGW編譯器)是否可以調用任意C/C++ DLL(在VS'05中編譯)?
確切地說,MinGW(gcc/g ++)編譯的代碼可以調用visualStudio編譯的另一個代碼的類函數嗎?
如上所述,當使用JNI調用任意提供的DLL中的類函數時,遇到「未定義的參考錯誤imp _ZN12classNameC1Ev」。我想知道是否名稱不兼容性爲2個不同的編譯器是錯誤的來源?Netbeans(c/C++的MinGW編譯器)是否可以調用任意C/C++ DLL(在VS'05中編譯)?
確切地說,MinGW(gcc/g ++)編譯的代碼可以調用visualStudio編譯的另一個代碼的類函數嗎?
編譯不完全是問題。問題在於鏈接。如果你有C++接口,那麼命名修改將明確地給你帶來麻煩。每個編譯器都有自己的名稱修改方案。太糟糕了,他們應該已經標準化了也許這也是C++標準...
解決此問題的一種方法是創建一個圍繞C++ Dll(必須使用MSVC進行編譯)的小C封裝API和從Netbeans使用此C API。 (最終爲C++ dll中的類製作一些C++頭文件包裝器,使其看起來像原始的Api。這是兩個級別的包裝,但我不知道這是否可以用更簡單的方式解決。