2011|08|
2013|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|05|06|07|08|09|10|11|12|
2016|01|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|

2019-01-29 MinGWでのDLLの作り方と提供の仕方 [長年日記]

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つを全部送付する。