Funktion in DLL exportieren und in Anwendung benutzen.
-
Hallo,
ich versuche eine Funktion in einer DLL zu packen, kurtz gefasste so:
// MxLib.cpp : Definiert die Initialisierungsroutinen für die DLL. // #include "stdafx.h" #include "MxLib.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // // Hinweis: // // Wird diese DLL dynamisch an die MFC-DLLs gebunden, // muss bei allen von dieser DLL exportierten Funktionen, // die MFC-Aufrufe durchführen, das Makro AFX_MANAGE_STATE // direkt am Beginn der Funktion eingefügt sein. // // Beispiel: // // extern "C" BOOL PASCAL EXPORT ExportedFunction() // { // AFX_MANAGE_STATE(AfxGetStaticModuleState()); // // Hier normaler Funktionsrumpf // } // // Es ist sehr wichtig, dass dieses Makro in jeder Funktion // vor allen MFC-Aufrufen angezeigt wird. Dies bedeutet, dass es // als erste Anweisung innerhalb der Funktion ausgeführt werden // muss, sogar vor jeglichen Deklarationen von Objektvariablen, // da ihre Konstruktoren Aufrufe in die MFC-DLL generieren // könnten. // // Siehe MFC Technical Notes 33 und 58 für weitere // Details. // // CMxLibApp BEGIN_MESSAGE_MAP(CMxLibApp, CWinApp) END_MESSAGE_MAP() // CMxLibApp-Erstellung CMxLibApp::CMxLibApp() { // TODO: Hier Code zur Konstruktion einfügen // Alle wichtigen Initialisierungen in InitInstance positionieren } // Das einzige CMxLibApp-Objekt CMxLibApp theApp; // CMxLibApp Initialisierung BOOL CMxLibApp::InitInstance() { CWinApp::InitInstance(); return TRUE; } void Test(void){ printf("Test"); } extern "C" __declspec(dllexport) void Test(void);
Allerdings funktioniert das nicht, und ich habe keine Ahnung warum.
Außerdem wüsste ich gerne, wie man die Funktion anschließend wieder in der
Anwendung verwendet/aufruft.
Ich verwende Visual c++ 2003 .NET Standart
-
Na die Info die du uns gibst ist ein bisschen wenig!!
Wichtig wäre z.B. ob du ein Dll Project verwendest.
Na ja, der Ansatz ist prizipiell nicht schlecht, nur das die Definierung
extern "C" __declspec(dllexport) void Test(void);
in ein Header file muss, das du dann in deine Applikation einbindest.
Dessen aber zu viel, drum schau mal hier rein:
http://www.resourcecode.de/view.php?id=776
danach hier rein:
http://www.supportnet.de/discussion/listmessages.asp?autoid=137442
und dann hier rein:
und dann solltest du das mit der Dll abgehakt haben
codeman
-
Danke, das mit der DLL klappt.
Allerdings wieß ich nicht wo man in Visual Studio 2003. NET die .lib einbinden kann.
-
Aha, jetzt klappts. Muss man in der Linker-Befehlszeile machen.
[Thread finished]
Ist ja eigentlich vieleicht auch was für die FAQ???