Dieser Beitrag gilt möglicherweise nicht für 64 -Bit -Systeme für alles, was ich weiß, aber er funktioniert bei 32 Bit -Fenstern ...
Ich habe Gendef ausprobiert, und es konnte keine DEF -Datei erstellt. Nachdem ich dieses Problem bereits für meine eigenen Zwecke gelöst habe, um DLLs zu schreiben, schlage ich vor, mit Tiny_impdef.exe aus TCC zu verwenden, was funktioniert. (TCC = Tiny C Compiler, von Fabrice Bellard und später Grishka.) Was mehr ist, im Gegensatz zu Dlltool (und möglicherweise Gendef) funktioniert es, ob GCC -s verwendet wurde, um die Ausgangsdll abzuziehen oder nicht!
Verwenden Sie DllTool, um die *.a -Bibliotheksdatei aus der DEF zu generieren, wenn Sie GCC verwenden. TCC wird den gesamten Build von DLL und EXE mit nur zwei Befehlszeilen durchführen. Ich habe eine Reihe von Befehlen, mit denen entweder die DLL oder die EXE von GCC oder TCC gebaut werden können, wobei alle vier möglichen Kombinationen funktionieren.
Batch -Datei unten, zum Plündern nach Belieben ... Ich bin sicher, sie kann verbessert werden, aber zumindest funktioniert sie so sauber wie soweit.
@ECHO OFF
REM This system seems to work regardless of which compiler makes the DLL or the EXE. Try to simplify for GCC.
REM TCC -Befehle. Erstellt 3 Dateien, DLL und def, dann exe. REM E:CODINGTCCTCC.EXE -shared E:CODINGTCCEXAMPLESTest_DLLTest_DLL.c -oE:CODINGTCCEXAMPLESTest_DLLTest_DLL.dll REM E:CODINGTCC Tcc.exe e: codierung tcc euests test_dll test_exe.c e: coding tcc Beispiele test_dll test_dll.def -oe: coding tcc Beispiele test_dll test_dll.exe
REM GCC -Befehle. WARNUNG! Benötigt noch TCCs Tiny_impdef.exe! E: codierung gcc bin gcc.exe -s -shared -ie: coding gcc include -mwindows e: coding tcc Beispiele test_dll test_dll.c -oe: coding tcc psalples Test_dll test_dll.dll e: coding tcc "tiny_impdef.exe" e: coding tcc Beispiele test_dll test_dll.dll> nul e: coding gcc mingw32 bin dlltool.exe E: Codierung tcc Beispiele test_dll test_dll.def -le: coding tcc Beispiele test_dll libtest_dll.a e: coding gcc bin gcc.exe -s -ie: gcc gcc Include -mwindows e: codierung tcc Beispiele test_dll test_exe.c e: coding tcc Beispiele test_dll libtest_dll.a -oe: coding tcc Beispiele test_dll test_dll.exe.exe
Start e: codierung tcc Beispiele test_dll test_dll.exe
Für die Vollständigkeit ist hier der C -Code für die Test -DLL:
#include <windows.h>
#define DLL_EXPORT __declspec(dllexport)
DLL_EXPORT void ZoodleWurdle(){
MessageBox (0, "Wurdle", "Zoodle", MB_ICONINFORMATION);
}
DLL_EXPORT void MangleWurzel(){
MessageBox (0, "Mangled", "Wurzels", MB_ICONINFORMATION);
}
Tut mir leid wegen der Gummidgismen, aber ich musste irgendwo anfangen, und ich mochte Foo und Bar oder Hello und World nie ... hier ist die Exe:
#include <windows.h>
void ZoodleWurdle();
void MangleWurzel();
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
ZoodleWurdle(); MangleWurzel();
return 0;
}