Momenteel ben ik bezig met een project waarbij een programma middels libtool een aantal modules kan laden. In deze modules zitten verschillende functies. Om het geheel makkelijk aan te spreken wilde ik dit via een klasse doen naar de hand van de volgende howto: http://www.isotton.com/ho...++-dlopen-mini-HOWTO.html
Echter krijg ik het niet voor elkaar om een klasse vanuit de module in de main-executable te krijgen
.
Het zit hem er in dat wanneer ik dus vanuit de module een nieuwe klasse return de library niet kan openen en een 'cannot open shared object file: No such file or directory' krijg. Als ik niets return loopt het wel goed
.
De relevante code, eerst de basisklasse voor modules:
Beetje wazig probleem weliicht, maar ik volg het ook niet meer waar het nu op stuk loopt, wellicht dat ik die basisklasse als shared library moet laden? Maar dat wordt nergens vermeld.
Echter krijg ik het niet voor elkaar om een klasse vanuit de module in de main-executable te krijgen
Het zit hem er in dat wanneer ik dus vanuit de module een nieuwe klasse return de library niet kan openen en een 'cannot open shared object file: No such file or directory' krijg. Als ik niets return loopt het wel goed
De relevante code, eerst de basisklasse voor modules:
C++:
En dan een voorbeeld van een module:1
2
3
4
| class module { public: virtual void test(); }; |
C++:
Het loopt dus al fout als ik in het hoofdprogramma het volgende aan roep:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| #include <iostream> #include "../../../modulebase.h" using namespace std; class custom_module : public module { public: virtual void test() { cout << "hi, this is a test for the module ja"; } }; extern "C" module* init_module() { std::cout << "hello" << '\n'; return new custom_module; // <- hier gaat het fout } extern "C" void exit_module() { std::cout << "bye" << '\n'; } |
C++:
Want wanneer ik niets return dan wordt er wel vrolijk tekst geschreben naar cout.1
| lt_dlhandle handle = lt_dlopen(file.c_str()); |
Beetje wazig probleem weliicht, maar ik volg het ook niet meer waar het nu op stuk loopt, wellicht dat ik die basisklasse als shared library moet laden? Maar dat wordt nergens vermeld.
[ Voor 12% gewijzigd door LauPro op 06-09-2005 22:21 ]
Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!