dllの作り方

ソースファイルfoo.c

__declspec(dllexport) int __stdcall foo(int x){
  return x+1;
}
__declspec(dllexport) void __stdcall bar(char *s){
  s[0]='B';
  s[1]='u';
}

defファイルfoo.def
これがなくてもdllは作れるが関数名が_foo@4とかになってしまう

LIBRARY foo.dll
EXPORTS
  foo
  bar

foo.objを作る

> cl /c foo.c

foo.dllを作る(foo.libとfoo.expも出来る)

> cl /LD foo.obj foo.def

dllを呼び出す

ソースファイルmain.c

#include<stdio.h>
int __stdcall foo(int);
void __stdcall bar(char*);
main(){
  char s[]="Fizz";
  printf("%d\n",foo(1));
  bar(s);
  printf("%s\n",s);
}

実行結果

> cl main.c foo.lib
> main
2
Buzz