Cygwin/mingwのコンパイラでクロスコンパイル的なことをしてました。
DLLも作って使ってみたら便利なんじゃないかと思い試しました。
DLLを作って使ってみます。
hello.h
int hello(void);
hello.c
#include "hello.h" #include <stdio.h> #include <windows.h> int hello(void) { printf("Hello Word"); return 0; }
test.c
#include "hello.h" int main(void){ hello(); }
コンパイル
takuya@letsnote:~/c$ i686-w64-mingw32-gcc -c hello.c takuya@letsnote:~/c$ i686-w64-mingw32-gcc -shared -o hello.dll hello.o takuya@letsnote:~/c$ i686-w64-mingw32-gcc test.c -mwindows -lhello -I./ -L./ takuya@letsnote:~/c$
完成したら
./a.exe hello world
と実行できます。
めでたしめでたし
追記
コンパイルした結果が、cygwin非依存になったことを確認する。
takuya@E350:~/Desktop$ cygcheck.exe a.exe Found: .\a.exe .\a.exe C:\Windows\system32\kernel32.dll C:\Windows\system32\API-MS-Win-Core-RtlSupport-L1-1-0.dll C:\Windows\system32\ntdll.dll C:\Windows\system32\KERNELBASE.dll C:\Windows\system32\API-MS-Win-Core-ProcessThreads-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Heap-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Memory-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Handle-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Synch-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-File-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-IO-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-ThreadPool-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-LibraryLoader-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-NamedPipe-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Misc-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-SysInfo-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Localization-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-ProcessEnvironment-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-String-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Debug-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-ErrorHandling-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Fibers-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Util-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Profile-L1-1-0.dll C:\Windows\system32\API-MS-Win-Security-Base-L1-1-0.dll C:\Windows\system32\msvcrt.dll C:\Windows\system32\API-MS-Win-Core-Console-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-DateTime-L1-1-0.dll C:\Windows\system32\API-MS-Win-Core-Interlocked-L1-1-0.dll