Ce message peut ne pas s'appliquer à des systèmes 64 bits pour tout ce que je sais, mais il fonctionne sur des fenêtres 32 bits ...
J'ai essayé Gendef et il n'a pas réussi à produire un fichier DEF. Ayant déjà résolu ce problème à mes propres fins en commençant à écrire des DLL, je suggère d'utiliser Tiny_impdef.exe de TCC, qui fonctionne. (TCC = Tiny C Compiler, par Fabrice Bellard, et plus tard, Grishka.) Quoi de plus, contrairement à Dlltool (et peut-être Gendef), il fonctionne si GCC a utilisé -S pour dépouiller la DLL de sortie ou non!
Utilisez Dlltool pour générer le fichier de bibliothèque * .a à partir du DEF, si vous utilisez GCC. TCC fera toute la construction de DLL et EXE, en utilisant seulement deux lignes de commande. J'ai un ensemble de commandes qui permettront que la DLL ou l'EXE soit construite par GCC ou TCC, les quatre combinaisons possibles fonctionnant.
Fichier par lots ci-dessous, pour piller à volonté ... Je suis sûr qu'il peut être amélioré, mais au moins cela fonctionne proprement tel quel.
@ECHO OFF
REM This system seems to work regardless of which compiler makes the DLL or the EXE. Try to simplify for GCC.
Commandes REM TCC. Crée 3 fichiers, DLL et DEF, puis Exe. Rem e: coding tcc tcc.exe -shared e: coding tcc examples test_dll test_dll.c -oe: coding tcc exemples test_dll test_dll.dll rem e: coding tcc tcc Tcc.exe e: coding tcc exemples test_dll test_exe.c e: coding tcc exemples test_dll test_dll.def -oe: coding tcc exemples test_dll test_dll.exe
Commandes REM GCC. ATTENTION! A encore besoin de TCC de TCC! E: coding gcc bin gcc.exe -s -shared -ie: coding gcc include -mwindows e: coding tcc exemples test_dll test_dll.c -oe: coding tcc exemples Test_dll test_dll.dll e: coding tcc "tiny_impdef.exe" e: coding tcc exemples test_dll test_dll.dll> nul e: coding gcc mingw32 bin dlltool.exe -d E: coding tcc examples test_dll test_dll.def -le: coding tcc exemples test_dll libtest_dll.a e: coding gcc bin gcc.exe -s -ie: coding gcc Include -mwindows e: coding tcc exemples test_dll test_exe.c e: coding tcc exemples test_dll libtest_dll.a -oe: coding tcc exemples test_dll test_dll.exe
Démarrer e: coding tcc examples test_dll test_dll.exe
Pour l'exhaustivité, voici le code C pour la DLL de test:
#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);
}
Désolé pour les gummidgisms, mais j'ai dû commencer quelque part, et je n'ai jamais aimé Foo and Bar, ni Hello and World ... Voici l'Exe:
#include <windows.h>
void ZoodleWurdle();
void MangleWurzel();
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
ZoodleWurdle(); MangleWurzel();
return 0;
}