| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
Diskussion: C++: Virtuelle Funktionen von Objekten aus shared libraries [solved] im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Edit: Ich hasse mich selber Für alle die ähnliche Probleme haben: 1. Es schadet nicht zu überprüfen, ob die ...
![]() |
| | #1 (permalink) |
| Registriert seit: 03.05.07 ![]() ![]() Likes: 50 | C++: Virtuelle Funktionen von Objekten aus shared libraries [solved] Anzeige Edit: Ich hasse mich selber ![]() Für alle die ähnliche Probleme haben: 1. Es schadet nicht zu überprüfen, ob die Libraries tatsächlich geladen wurden (beim Beispiel weiter unten müsste es "./library.so" heißen anstelle von "library.so") 2. Man sollte die Library erst dann wieder entladen, wenn die Objekte nicht mehr verwendet werden. Ich möchte gerne ein Objekt, welches virtuelle Funktionen enthält, innerhalb einer dynamisch nachgeladenen Library erstellen: Code: int main(int argc, char **argv)
{
void *libHandle = dlopen("library.so", RTLD_NOW);
Class* (*createFunction)() = (Class* (*)())dlsym(libHandle, "createFunction");
Class *a = createFunction();
a->virtFunc();
delete a;
dlclose(libHandle);
} Code: class Class
{
public:
virtual void virtFunc();
};
void Class::virtFunc()
{
printf("I was called\n");
} Code: extern "C" Class* createFunction()
{
return new Class();
} Das Zeug crasht aber aus Prinzip immer beim Aufruf der virtuellen Funktion: Code: (gdb) break main
Breakpoint 1 at 0x80485cd: file main.cpp, line 7.
(gdb) run
Starting program: /home/benediktibk/Desktop/blub/a.out
Breakpoint 1, main (argc=1, argv=0xbffff434) at main.cpp:7
7 void *libHandle = dlopen("library.so", RTLD_NOW);
(gdb) n
8 Class* (*createFunction)() = (Class* (*)())dlsym(libHandle, "createFunction");
(gdb) n
9 Class *a = createFunction();
(gdb) n
Program received signal SIGSEGV, Segmentation fault.
0x00000000 in ?? ()
(gdb) Ich entschuldige mich hiermit für meinen kleinen Anfall, aber das ist nun mal sehr ärgerlich. Vielen Dank fürs Durchlesen (und hoffentlich auch helfen), benediktibk Geändert von benediktibk (02.11.11 um 15:41 Uhr) |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| perl threads::shared - diverse Probleme mit "shared" variablen | keksinat0r | Code Kitchen | 4 | 22.02.09 18:43 |
| threads::shared | threads->object() arbeitet nicht mit "shared" arrays | keksinat0r | Code Kitchen | 0 | 23.08.08 14:11 |
| mit Java und Array mit Objekten | odigo | Code Kitchen | 5 | 25.08.07 01:28 |
| shared memory | CPU8080 | Windows | 3 | 23.05.06 19:10 |
| fehlende libraries? | Stromer | Code Kitchen | 10 | 09.09.04 18:31 |