0
我想構建一個Linux庫(*。so)以在Java應用程序中使用它。這個庫自身加載一個帶有本地函數的dll文件。dlsym在無限循環中結束
這是我的C++代碼:
__delspec(dllexport) void __cdecl GetDllVersion(void){
typedef int(*GetDllVersion)(int*,int*,int*,int*);
void* lib = dlopen("~/lib.dll",RTLD_NOW);
cout << "Loading Symbol..." << endl;
GetDllVersion getVer= (GetDllVersion) dlsym(lib,"GetDllVersion");
dlclose(lib);
}
的代碼與wineg++ -shared lib.cpp -o libexports.so -Wl,--no-as-needed -ldl
編譯沒有錯誤。
Java應用程序在一個循環中打印出「正在載入符號...」,然後在沒有任何消息的情況下終止。我可以確定這必須用dlsym()做些什麼。
與nm -D lib.so
我可以看看裏面的lib.so.函數GetDllVersion()的確是這個庫中的一個符號。
有人可以告訴我爲什麼有一個無限循環,並且Java VM正在終止?
問候Wurmi