Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:c:mingw_dll

Különbségek

A kiválasztott változat és az aktuális verzió közötti különbségek a következők.

Összehasonlító nézet linkje

oktatas:programozas:c:mingw_dll [2017/10/02 20:29]
oktatas:programozas:c:mingw_dll [2019/08/21 18:35] (aktuális)
admin létrehozva
Sor 1: Sor 1:
 +[[:​oktatas:​programozás:​c|<​ C]]
 +
 +====== MingW DLL ======
 +
 +===== DLL készítése Linux alatt =====
 +
 +
 +<code c Makefile>​
 +main.exe: main.c
 +        i586-mingw32msvc-gcc -o main.exe main.c kiir.dll
 +</​code>​
 +
 +
 +<code c kiir.h>
 +void ir(void);
 +</​code>​
 +
 +
 +<code kiir.c>
 +#include <​stdio.h>​
 +#include "​kiir.h"​
 +void ir()
 +{
 +    printf("​Helló Világ\n"​);​
 +}
 +</​code>​
 +
 +A dll fordítása (Linux alatt):
 +<code bash>
 +sudo apt-get install mingw32
 +i586-mingw32msvc-gcc -c kiir.c
 +i586-mingw32msvc-gcc -shared -o kiir.dll kiir.o
 +</​code>​
 +
 +
 +
 +A DLL használata:​
 +
 +
 +
 +<code c main.c>
 +#include <​stdio.h>​
 +main()
 +{
 +    ir();
 +}
 +</​code>​
 +
 +
 +
 +===== Még egyszer =====
 +
 +Az alábbiak Windowson MinGW32 fordítóval működnek.
 +==== A DLL létrehozása ====
 +
 +<code c sajat.c>
 +__declspec(dllexport) int __cdecl dupla(int szam)
 +{
 +  return 2 * szam;
 +}
 +</​code>​
 +
 +
 +<code makefile Makefile>​
 +sajat.dll: sajat.c
 + gcc -c -o sajat.o sajat.c
 + gcc -o sajat.dll -s -shared sajat.o -Wl,​--subsystem,​windows
 +</​code>​
 +
 +
 +
 +==== A DLL felhasználása ====
 +
 +<code c main.c>
 +#include <​stdlib.h>​
 +#include <​stdio.h>​
 +
 +__declspec(dllimport) int __cdecl dupla(int szam);
 +
 +int main(int argc, char** argv)
 +{
 + printf("​%d\n",​ dupla(6));
 +
 + return EXIT_SUCCESS;​
 +}
 +</​code>​
 +
 +
 +<code makefile Makefile>​
 +main.exe: main.c
 + gcc -c -o main.o main.c
 + gcc -o main.exe -s -L. -lsajat main.o
 +</​code>​
 +
 +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
 +
 +
 +