K
kingdom
Mitglied
Hallo,
Ich habe bis dato noch nicht viel unter/für Linux programmiert und jetzt habe ich ein Problem, das ich mir einfach nicht erklären kann.
Folgendes: Ich habe eine libany2.so.0.0.0 (mit KDevelop) erstellt in /usr/lib kopiert die Links angelegt (libany.so.0.0 ...) und ldconfig ausgeführt.
Dann hab ich ein Testprogramm geschrieben, welches diese BIB nutzen soll.
Wenn ich das ausführe gibt es folgendes aus:
Nach meinem Verständnis hat er also die BIB geöffnet und scheitert beim öffnen der Funktion.
Woran kann das liegen?
Ich habe bis dato noch nicht viel unter/für Linux programmiert und jetzt habe ich ein Problem, das ich mir einfach nicht erklären kann.
Folgendes: Ich habe eine libany2.so.0.0.0 (mit KDevelop) erstellt in /usr/lib kopiert die Links angelegt (libany.so.0.0 ...) und ldconfig ausgeführt.
Dann hab ich ein Testprogramm geschrieben, welches diese BIB nutzen soll.
Code:
#ifdef HAVE_CONFIG_H
#include <config.h>
#endif
#include <iostream>
#include <cstdlib>
#include <dlfcn.h>
using namespace std;
int main(int argc, char* argv[])
{
void *handle;
int (*my_func)(int);
char *error;
handle = dlopen ("libany2.so.0", RTLD_LAZY);
if (!handle) {
//fprintf (stderr, "%s\n", dlerror());
cout << "Error: " << dlerror() << endl;
exit(1);
}
cout << "SO_HANDLE: " << handle << endl;
dlerror(); /* Clear any existing error */
//*(void **) (&my_func) = dlsym(handle, "any_func");
my_func = (int (*)(int))dlsym(handle, "any_func");
cout << "FUNC_HANDLE: " << my_func << endl;
if ((error = dlerror()) != NULL) {
cout << "Error: " << dlerror() << endl;
exit(1);
}
//printf ("%f\n", (*cosine)(2.0));
(*my_func)(3);
dlclose(handle);
return EXIT_SUCCESS;
}
Wenn ich das ausführe gibt es folgendes aus:
Code:
SO_HANDLE: 0x804a028
FUNC_HANDLE: 0
Error: Betätigen Sie die Eingabetaste, um fortzufahren!
Woran kann das liegen?