我有一個C++ DLL,其中的函數嵌套在名稱空間中。通過JAVA訪問C++本機DLL(帶名稱空間)
我需要在java中訪問這些函數..我不是一個java專家,但我知道它的一些基本知識。
我發現了基本的Java代碼來訪問使用JNI的C++本機DLL中的方法,但我不知道如何訪問嵌套在命名空間中的函數。
我有一個C++ DLL,其中的函數嵌套在名稱空間中。通過JAVA訪問C++本機DLL(帶名稱空間)
我需要在java中訪問這些函數..我不是一個java專家,但我知道它的一些基本知識。
我發現了基本的Java代碼來訪問使用JNI的C++本機DLL中的方法,但我不知道如何訪問嵌套在命名空間中的函數。
您可能需要獲取C++函數的重名名稱。您可以使用nm
在Unix上執行此操作,或在Windows上使用dumpbin /exports
。重名的名稱將具有名稱空間和函數名稱,因此應該很容易找到(除非有幾個重名名稱需要區分)。你確定這些函數是正常的C++函數而不是類方法嗎?
「耶利米Willcock」答案是正確的,無論如何,你總是可以訪問一個DLL函數,內部類或命名空間使用「mangled名稱」,它是奇怪的,骯髒的做事方式,但它的作品,即使有其他方式。
你可以做一些測試,accesign這些功能,以後,做你自己的包裝。
該結構類似於: 名稱空間>類>靜態方法。 而我也有dll的頭文件..//思維會甚至幫助... – 2011-03-07 04:04:48
@Mafahir:靜態方法將工作得很好 - 它是非靜態的,將導致問題。 – 2011-03-07 04:05:31