[[:oktatas:programozás:c|< C]] ====== MingW DLL ====== ===== DLL készítése Linux alatt ===== main.exe: main.c i586-mingw32msvc-gcc -o main.exe main.c kiir.dll void ir(void); #include #include "kiir.h" void ir() { printf("Helló Világ\n"); } A dll fordítása (Linux alatt): sudo apt-get install mingw32 i586-mingw32msvc-gcc -c kiir.c i586-mingw32msvc-gcc -shared -o kiir.dll kiir.o A DLL használata: #include main() { ir(); } ===== Még egyszer ===== Az alábbiak Windowson MinGW32 fordítóval működnek. ==== A DLL létrehozása ==== __declspec(dllexport) int __cdecl dupla(int szam) { return 2 * szam; } sajat.dll: sajat.c gcc -c -o sajat.o sajat.c gcc -o sajat.dll -s -shared sajat.o -Wl,--subsystem,windows ==== A DLL felhasználása ==== #include #include __declspec(dllimport) int __cdecl dupla(int szam); int main(int argc, char** argv) { printf("%d\n", dupla(6)); return EXIT_SUCCESS; } main.exe: main.c gcc -c -o main.o main.c gcc -o main.exe -s -L. -lsajat main.o A -s kapcsoló a szimbólumtábla törlésére ad utasítást. A -L. kapcsolóval megmondjuk, hogy a -l kapcsoló után megadott állományt, az aktuális könyvtárban kell keresni. ===== Linkek ===== * http://www.transmissionzero.co.uk/computing/building-dlls-with-mingw/ * http://wyw.dcweb.cn/stdcall.htm * http://www.cygwin.com/cygwin-ug-net/dll.html * http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs * http://www.mingw.org/wiki/sampleDLL