J'essaye de construire une bibliothèque Linux (*. So) pour l'utiliser dans une application Java. Cette bibliothèque charge elle-même un fichier dll avec des fonctions natives.dlsym se termine en boucle infinie
Ceci est mon code 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);
}
Le code a été compilé avec wineg++ -shared lib.cpp -o libexports.so -Wl,--no-as-needed -ldl
sans erreurs.
L'application Java imprime "Loading Symbol ..." dans une boucle, puis se terine sans aucun message. Je pourrais déterminer que cela doit faire quelque chose avec dlsym().
Avec nm -D lib.so
Je pourrais regarder à l'intérieur de la lib.so. La fonction GetDllVersion() est en effet un symbole dans cette bibliothèque. Est-ce que quelqu'un peut me dire pourquoi il y a une boucle infinie et où la machine virtuelle Java se termine?
Cordialement Wurmi