bcc32でDLLを作成する

覚え書き。ここを参考に。
bcc32で作成したDLLをbccDelphiで使う。
bccをインストールしたらilink32.cfgとbcc32.cfgは作成しておく。
dllmain.c(dllmain.dll)

#include <stdio.h>

__declspec(dllexport) void PrintHello(void)
{
    printf("Hello!\n");
}

__declspec(dllexport) void PrintVar(int a, int b)
{
    printf("a=%d b=%d\n", a, b);
}

dllgo.c(dllgo.exe)

__declspec(dllimport) PrintHello(void);
__declspec(dllexport) void PrintVar(int a, int b);

int main(void)
{
    PrintHello();
    PrintVar(1, 2);
    return 0;
}

dllgopas.dpr(dllgopas.exe)

program dllgopas;

{$APPTYPE CONSOLE}
procedure _PrintHello; external 'dllmain.dll';
procedure _PrintVar(a, b: Integer); stdcall; external 'dllmain.dll';

begin
  _PrintHello;
  _PrintVar(1, 2);
end.

コンパイル方法とか。

>bcc32 -c dllmain.c
>bcc32 -tWD -WM -edllmain.dll dllmain.obj
>implib dllmain.lib dllmain.dll
>bcc32 dllgo.c dllmain.lib
>dcc32 dllgopas.dpr
>dir
2007/11/05  00:27    <DIR>          .
2007/11/05  00:27    <DIR>          ..
2007/11/05  00:15               170 dllgo.c
2007/11/05  00:15            47,104 dllgo.exe
2007/11/05  00:15               264 dllgo.obj
2007/11/05  00:15           393,216 dllgo.tds
2007/11/05  00:24               208 dllgopas.dpr
2007/11/05  00:15            13,824 dllgopas.exe
2007/11/05  00:13               189 dllmain.c
2007/11/05  00:14            54,272 dllmain.dll
2007/11/05  00:14             1,024 dllmain.lib
2007/11/05  00:13               577 dllmain.obj
2007/11/05  00:14           393,216 dllmain.tds