Esta postagem pode não se aplicar a sistemas de 64 bits para tudo o que sei, mas funciona com janelas de 32 bits ...
Eu tentei o Gendef e não conseguiu produzir um arquivo def. Tendo já resolvido esse problema para meus próprios propósitos no começo de escrever DLLs, sugiro usar tiny_impdef.exe do TCC, que funciona. (TCC = Tiny C Compiler, de Fabrice Bellard, e mais tarde, Grishka.) Além disso, ao contrário do DLLtool (e possivelmente Gendef), funciona se o GCC usou -S para retirar a dll de saída ou não!
Use o DLLtool para gerar o arquivo de biblioteca *.a a partir do def, se estiver usando o GCC. O TCC fará toda a construção de DLL e EXE, usando apenas duas linhas de comando. Eu tenho um conjunto de comandos que permitirão que a DLL ou o EXE seja construída pelo GCC ou TCC, com todas as quatro combinações possíveis funcionando.
Arquivo em lote abaixo, para pilhagem à vontade ... Tenho certeza de que pode ser melhorado, mas pelo menos funciona de maneira limpa.
@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 Comandos. Cria 3 arquivos, DLL e def, depois exe. Rem e: coding tcc tcc.exe -shared e: coding tcc exemplos test_dll test_dll.c -oe: coding tcc exemplos test_dll test_dll.dll Rem E: coding tcc Tcc.exe e: coding tcc exemplos test_dll test_exe.c e: coding tcc exemplos test_dll test_dll.def -oe: coding tc Exemplos test_dll dll.exe
Comandos Rem GCC. AVISO! Ainda precisa de Tiny_Impdef.exe do TCC! E: coding gcc bin gcc.exe -s -shared -ie: coding gcc incluir -mwindows e: coding tcc exemplos test_dll test_dll.c -e: coding tcc examles Test_dll test_dll.dll e: coding tcc "tiny_impdef.exe" e: coding tcc exemplos test_dll test_dll.dll> nul e: coding gcc mingw32 dll dll> E:CODINGTCCEXAMPLESTest_DLLTest_DLL.def -lE:CODINGTCCEXAMPLESTest_DLLlibTest_DLL.a E:CODINGGCCBINGCC.EXE -s -IE:CODINGGCC Incluir -mwindows e: coding tcc exemplos test_dll test_exe.c e: coding tcc exemplos test_dll liBtest_dll.a -e: coding tcc exemplos test_dll test_exll.exll.ae: coding tcc Exemplos test_dll e
Iniciar e: coding tcc exemplos test_dll test_dll.exe
Para completude, aqui está o código C para a DLL de teste:
#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);
}
Desculpe pelos gummidgismos, mas eu tive que começar em algum lugar, e nunca gostei de Foo e Bar, ou olá e mundo ... aqui está o exe:
#include <windows.h>
void ZoodleWurdle();
void MangleWurzel();
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
ZoodleWurdle(); MangleWurzel();
return 0;
}