Klassen und Funktionen in DLL
-
Hi Leute,
ich weiß das ist der hundertste Thread zu diesem Thema
doch irgendwie hänge ich etwas.
Also ich hab ne Klasse und einige Funktionen die ich in ne DLL packen will. Ich hab wie es sich gehört erstmal alle Thread dazu im Forum gelesen und mich an die Lösungen gehalten.
doch irgendwie spinnt mein Compiler rum:
In der DLL hab ich folgenden Header:#ifdef GREN_IB #define EXPORT __declspec(dllexport) #else #define EXPORT __declspec (dllimport) #endif class EXPORT c_root { public: HINSTANCE hinstance; HWND hwnd; HDC hdc; ... ... public: c_root(); ~c_root(); bool Program_CreateWindow(); bool Program_DestroyWindow(); ... ... }; EXPORT bool Program_Init( int Bildschirmbreite, int Bildschirmhoehe, int Bildschirmbpp, bool Fullscreen);
soweit dachte ich eigentlich das es richtig währe doch der Compiler meint:
error C2491: 'Program_Init' : Definition von Funktion fuer dllimport nicht erlaubt
und verweist auf meine Quelltextdatei wo natürlich zu dem Funktionskopf aus dem Header die Funktion steht.
EXPORT boolProgram_Init( int Bildschirmbreite, int Bildschirmhoehe, int Bildschirmbpp, bool Fullscreen) { .... }
Wenn ich nun das EXPORT im Funktionskopf der Quelltextdatei weglasse bekomme ich ne warnung wie folgt:
warning C4273: 'Program_Init' : Inkonsistente DLL-Bindung. dllexport angenommen.
kann mir jemand sagen wo ich falschliege mit meinen Quelltext ?
[ Dieser Beitrag wurde am 03.01.2003 um 12:05 Uhr von TheShadow editiert. ]
-
nenn das ding nicht EXPORT sondern anders. und versuch bool EXPORT Programm_Init
-
@<>
Klang ja gut dein Vorschlag das EXPORT umzunennen. Ich hab aus EXPORT jetzt GREN_EXPORT gemacht und hab auch den Funktionskopf umgestellt doch der Fehler bleibt.
Hat noch jemand einen Vorschlag ?
-
Wofür steht dllimport? Die Definition (der Code) Funktion wird aus der dll importiert.
Folglich darf eine Funktion, vor der dllimport steht, keinen Code aufweisen. Lass den ganzen Rumpf der Funktion weg. Der steht schon in der dll.