Hallo zusammen,
ich habe ein Problem mit der VTable, befürchte ich.
Ich arbeite hier auf einem Windows CE 6.0 und Programmiere mit dem
Visual Studio 2008.
Ich habe eine Lib und DLL die laut Ersteller folgendes exportiert:
1 | class __declspec(dllexport) LibClass
|
2 | {
|
3 | public:
|
4 | LibClass();
|
5 | virtual ~LibClass();
|
6 | virtual void func1() = 0;
|
7 | virtual void func2() = 0;
|
8 | virtual LibClass* func3() = 0;
|
9 | };
|
In einer anderen Klasse gibt es die Funktion
1 | class __declspec(dllexport) SecondClass{
|
2 | public:
|
3 | static SecondClass* create(LibClass* pLibClas);
|
Bei mir in meinem Projekt (der Exe) habe ich die .lib eingebunden und
den Header und leite dort von der "LibClass" Klasse ab, fülle die
Funktionen mit Inhalt und übergebe dann der create Funktion der
SecondClass meinen Pointer.
Das ganze sieht so aus:
1 | class CMyClass : public LibClass
|
2 | {
|
3 | public:
|
4 | CMyClass (void);
|
5 | virtual ~CMyClass (void);
|
6 | virtual void func1();
|
7 | virtual void func2();
|
8 | virtual LibClass* func3();
|
9 | private:
|
10 | HANDLE m_hMutex;
|
11 | };
|
Dann mache ich eben noch in der Mainloop:
1 | CMyClass* pmyClass = NULL;
|
2 | SecondClass* pSecondClass = NULL;
|
3 | ...
|
4 | pmyClass = new CMyClass();
|
5 | pSecondClass = create(pmyClass);
|
Und nun kommt das kuriose. Der Ersteller der Lib bekommt durch die
create Funktion den Pointer auf pmyClass und ruft bei sich
pmyClass->func1(); und pmyClass->func2(); auf aber es wird bei mir func2
und func3 ausgeführt.
Wieso ist das so?! Kann mir das jemand erklären?
Besten Dank und Gruß
Josef