MinGWでのDLLの作り方と提供の仕方
(Step 1)
main.cpp
//-------------------------------
#include <stdio.h>
#include "dlltest.h"
int main(void)
{
printf("Add:%d\n", add(1, 2));
printf("Sub:%d\n", sub(1, 2));
return 0;
}
//-------------------------------
dlltest.h
//-------------------------------
int add(int x, int y);
int sub(int x, int y);
//-------------------------------
dlltest.cpp
//-------------------------------
int add(int x, int y)
{
return x + y;
}
int sub(int x, int y)
{
return x - y;
}
//-------------------------------
(Step 2)
>gcc -c dlltest.cpp
(gdbで調べたい時は">gcc -c -g dlltest.cpp")
(Step 3)
>gcc dlltest.o -o dlltest.dll -shared
(これで、dllファイルの完成)
(Step 4)
>gcc -c main.cpp
>gcc main.o dlltest.dll -o ebata.exe
("gcc -g main.cpp dlltest.dll -o ebata.exe" とすれば, main.oを生成することなく、かつ、gdbが使える)
==============================
MinGW以外のコンパイラ(Visual Studioとか)で作成したexeで、MinGW作成のDLLを使用する場合は、(Step 3)を以下のようにする
>gcc dlltest.o -o dlltest.dll -shared -Wl,--out-implib,dlltest.lib
すると"dlltest.lib"ができる。
dllの提供先には、"dlltest.h" ("dlltest.cpp"も付けた方が親切). "dlltest.dll", "dlltest.lib" の3つを全部送付する。