dll Problem, Hilfe .....
-
Hallo,
habe folgenden Code.
Unit3.h#ifndef Unit3H #define Unit3H //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> //--------------------------------------------------------------------------- class TForm3 : public TForm { __published: // Von der IDE verwaltete Komponenten TLabel *Label1; TListBox *ListBox1; private: // Benutzer-Deklarationen public: // Benutzer-Deklarationen __fastcall TForm3(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TForm3 *Form3; //--------------------------------------------------------------------------- __declspec(dllexport) AnsiString VarVersion(AnsiString); #endifUnit3.cpp
AnsiString Var; AnsiString tt; tt = VarVersion(Var); ListBox1->Items->Add(tt);dll.cpp
..... #pragma argsused int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved) { return 1; } //--------------------------------------------------------------------------- AnsiString VarVersion(AnsiString x) { x = "0.0"; return x; }Dann kommt die Meldung immer:
[Linker Fehler] Error: Ungelöste externe 'VarVersion(System::AnsiString)' referenziert von F:\...\DEBUG_BUILD\UNIT3.OBJKönnt ihr mir Bitte helfen, weiss nicht weiter und weiss nicht wo der Fehler ist
und wo ich suchen soll.
Dank im Voraus.
-
Hallo
Der Modifizierer dllexport muß bereits in der DLL mit angegeben werden.
Hier findest du ein genaue Anleitung.bis bald
akari
-
Habe das so probiert wenn ich es richtig verstanden habe:
dll.cpp__declspec (dllexport) AnsiString VarVersion(AnsiString x)Und das hat leider nicht funktioniert.
-
Du solltest zwischen dllexport (in der DLL) und dllimport (in der Anwendung) unterscheiden. Zudem muß die mit der DLL erstellte .LIB-Datei zum Anwendungsprojekt hinzugefügt werden.
Wenn du außerdem AnsiStrings zwischen DLL und Anwendung austauschst, mußt du, da AnsiString mit Referenzzählung arbeitet, den Memory-Manager als DLL einbinden (wenn du ein leeres DLL-Projekt erstellst, erscheint in den Quellcodekommentaren ein entsprechender und detaillierter Hinweis).