Probleme mit Erstellen und Einbinden einer DLL
-
Ich habe mehrere Funktionen geschrieben, die ich in einem Header zusammengefasst habe ("getterFuncs.h"). Ich habe in diesem Header eine Funktion, die die anderen benutzt ("meineFunktionImHeader()"), und die ich gerne in eine dll exportieren möchte. Nach dem was ich recherchiert habe, habe ich folgendes in Visual Studio ausgeführt:
- Datei -> Neu -> Projekt -> MFC Dll, regular DLL, MFC statically linked (ich will die aktuelle MFC dll nicht mitliefern müssen)
- in das Projekt habe ich meinen Header eingefügt (und included)
- im Projekt hat VS jetzt folgendes angelegt:
dlltest.h:
#include "resource.h" // main symbols // CIcaLicenseManagerApp // See IcaLicenseManager.cpp for the implementation of this class // class CIcaLicenseManagerApp : public CWinApp { public: CIcaLicenseManagerApp(); // Overrides public: virtual BOOL InitInstance(); DECLARE_MESSAGE_MAP() };in der Implementierungsdatei dlltest.cpp habe ich folgenden Code eingefügt:
#include "./getterfuncs.h" #if defined(_MSC_VER) #define DLL __declspec(dllexport) #else #define DLL #endif DLL BOOL meineFunktion(CString name) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); return meineFunktionImHeader(name); }dann habe ich auf "release" gestellt, und kompiliert. Ich erhalte ohne Fehlermeldungen eine .dll und eine .lib Datei. Um das Einbinden zu testen, habe ich jetzt ein neues Dialogbasiertes Projekt erstellt, und dort in der Implementierungsdatei folgendes eingefügt:
__declspec(dllimport)BOOL meineFunktion(CString);Außerdem habe ich die dlltester.lib unter den Project Settings bei Linker -> Input angegeben.
Wenn ich die Funktion jetzt aber verwende, dann bekomme ich die Meldung, dass sie nicht aufgelöst werden konnte (unresolved external symbol).Wo ist mein Fehler? Es ist meine erste DLL

-
1. Wenn Du die DLL satisch linkst darfst Du in keinem Fall einen CString oder andere MFC Varaiblen übergeben! Das geht nur, wenn Du die DLL dynamisch linkst.
2. Zeige mal die Fehlermeldung des Linkers.
-
Aaaaah - das wars!!
Ich hatte das auch gelesen, leider ganz vergessen, woher CString stammt. Hab es in einen LPCTSTR umgeändert, und es geht! Danke!