dllの作り方

dllになる方のソース

int foo(int x){
  return x+1;
}

dll,def,aを一気に作成
インポートライブラリのファイル名をlibfoo.aにしているのは、gccの-lオプションのため。
出来たdllのサイズは6KBくらい。

> gcc -shared -o foo.dll foo.c -Wl,--output-def,foo.def,--out-implib,libfoo.a

本体の方のソース

#include<stdio.h>
int foo(int);
main(){
  printf("%d\n",foo(1));
}

本体のコンパイル

> gcc main.c -L. -lfoo

生成されたfoo.defの中身

EXPORTS

    DllMainCRTStartup@12 @1
    __do_global_ctors @2
    __do_global_dtors @3
    __main @4
    atexit @5
    foo @6