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