Es posible que esta publicación no se aplique a los sistemas de 64 bits para todo lo que sé, pero funciona en Windows de 32 bits ...
Intenté GENDEF y no pudo producir un archivo DEF. Después de haber resuelto este problema para mis propios fines al comenzar a escribir DLL, sugiero usar tiny_impdef.exe de TCC, que funciona. (TCC = Tiny C Compiler, de Fabrice Bellard, y más tarde, Grishka). ¡Lo que es más, a diferencia de DllTool (y posiblemente Gendef), funciona si GCC usó -S para quitar la salida DLL o no!
Use DllTool para generar el archivo de biblioteca *.a desde el DEF, si se usa GCC. TCC hará toda la construcción de DLL y EXE, utilizando solo dos líneas de comando. Tengo un conjunto de comandos que permitirán que el DLL o el EXE sea construido por GCC, o TCC, con las cuatro combinaciones posibles funcionando.
Archivo por lotes a continuación, para saquear a voluntad ... Estoy seguro de que puede ser mejorado, pero al menos funciona limpiamente como está.
@ECHO OFF
REM This system seems to work regardless of which compiler makes the DLL or the EXE. Try to simplify for GCC.
Comandos REM TCC. Crea 3 archivos, DLL y DEF, luego exe. Rem e: coding tcc tcc.exe -shared e: coding tcc ejemplos test_dll test_dll.c -oe: coding tcc ejemplos test_dll test_dll.dll rem e: coding tcc tcc tcc Tcc.exe e: coding tcc ejemplos test_dll test_exe.c e: coding tcc ejemplos test_dll test_dll.def -oe: coding tcc ejemplos test_dll test_dll.exe
REM Comandos GCC. ¡ADVERTENCIA! ¡Todavía necesita Tiny_impdef.exe de TCC! E: Coding gcc bin gcc.exe -s -shared -ie: coding gcc include -mwindows e: coding tcc ejemplos test_dll test_dll.c -oe: coding tcc ejemplos Test_dll test_dll.dll e: coding tcc "tiny_impdef.exe" e: coding tcc ejemplos test_dll test_dll.dll> nul e: coding gcc mingw32 bin dllTool.exe --Dd E: Coding tcc ejemplos test_dll test_dll.def -le: coding tcc ejemplos test_dll libtest_dll.a e: coding gcc bin gcc.exe -s -ie: coding gccc Include -mwindows e: coding tcc ejemplos test_dll test_exe.c e: coding tcc ejemplos test_dll libtest_dll.a -oe: coding tcc ejemplos test_dll test_dll.exe
Inicio E: Coding tcc ejemplos test_dll test_dll.exe
Para completar, aquí está el código C para la prueba 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);
}
Perdón por los gummidgismos, pero tuve que comenzar en algún lugar, y nunca me gustó Foo y Bar, o hola y mundo ... aquí está el exe:
#include <windows.h>
void ZoodleWurdle();
void MangleWurzel();
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
ZoodleWurdle(); MangleWurzel();
return 0;
}