Frage zu FAQ-Beitrag "DLL"
-
Von der Dll? Oder vom Programm? Ob ich dir nun den Quellcode gebe oder sage was ich gemacht habe, ist relativ egal, da das nur ein Funktionsaufruf ist...
So binde ich das ein... #include "header/dll.h" ... #pragma comment (lib, "dll.lib") ... DllFunktion ();dll.h:
#ifdef __cplusplus #define EXPORT extern "C" __declspec (dllexport) #else #define EXPORT __declspec (dllexport) #endif EXPORT void _stdcall DllFunktion ();dll.cpp:
#include <windows.h> #include "dll.h" int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved) { return 0; } EXPORT void _stdcall DllFunktion (HWND hWnd, LPSTR lpText) { MessageBox (NULL, "DLL-Test", "MessageBox", MB_OK); }Mfg Ominion
-
Zweimal dllexport?
-
Einmal, wenn die DLL mit C++ verwendet wird, und einmal wenn sie mit C verwendet wird.
Mfg Ominion
-
In der EXE solltest du schon dllimport benutzen.
-
Also ich weiß jetzt nicht wie du das meinst...aus dll.h und dll.cpp entsteht die DLL. In der EXE benutze ich das garnicht, sondern nur die Funktion.
Mfg Ominion
-
#pragma comment ist AFAIK eine Erweiterung des Microsoft-Compilers. Beim BCC kannst du stattdessen #pragma link "..." verwenden. Alternativ funktioniert das auch über Compiler-Switches (einfach bcc32 mal mit dem Parameter /? aufrufen und schauen).
-
Hat leider gar nichts gebracht...hatte den gleichen Effekt wie mit #pragma comment
Mfg Ominion
-
Ominion schrieb:
aus dll.h und dll.cpp entsteht die DLL. In der EXE benutze ich das garnicht
Du bindest doch die dll.h in der EXE ein, oder ist das eine andere Datei?
-
Ja da hast du Recht...aber wo soll ich das denn sont hinschreiben? Oder soll ich nen neuen Header nur für das Programm machen?
Mfg Ominion
-
habe das jetzt schon vor längerem so gemacht, wie ich es selbst vorgeschlagen habe, hat aber auch nichts geholfen.
Mfg Ominion
PS: *push*
-
Also ich erinnere mich, dass man beim dynamischen Linken den Funktionsnamen mit einem "_" versehen musste, wenn man die DLL mit dem Borland Compiler erstellt hat. Quasi so:
//DLL.cpp DLLEXPORT void MyFunc (...) ...//App.cpp ... <pFunc> = GetProcAddress(<hDll>, "_MyFunc") ...Bei mit einem Microsoft Compiler erstellten DLLs ist das nicht nötig.
Ich weiss nicht, ob das Auswirkungen auf das statische Linken hat, aber ich wollte es mal erwähnen.
Vielleicht hilft dir das ja.
Maffe
-
Also irgendwie funktioniert gar nichts, was das anbelangt...
Ich habe da jetzt mal eine bitte:
Wenn jemand auch mit den Borland Command-Line Compiler 5.5.1 arbeitet und funktionierende Libs erstellen kann, kann der bitte mal die Compiler-Anweisungen und Source für die DLL und das Programm wo die benutzt wird posten? Also ein Punkt davon würde ja auchschon gut seinDIV Ominion