[ C ][ Delphi ]bcc32でDLLを作成する 를 Lazarus로 테스트
lazarus 2016. 4. 12. 13:11岡野真也 님의
[ C ][ Delphi ]bcc32でDLLを作成する 자료 (http://d.hatena.ne.jp/nullpobug/20071105/1194189747)
를 보고
Delphi 대신 Lazarus로 테스트
사용된 툴 : bcc++5.5 , Lazarus 1.6
--------------------------------------------------------------
[bcc32에서 만든 DLL 을 bcc 와 Lazarus 에서 사용한다.]
1.bcc 를 설치 하면 ilink32.cfg과 bcc32.cfg은 만들어 둔다.
[ilink32.cfg]
-L"C:\Borland\Bcc55\lib"
[bcc32.cfg]
-I"C:\Borland\Bcc55\include"
-L"C:\Borland\Bcc55\lib"
* bcc path 설정을 위한 배치파일도 만들어 둔다.
[bccsetpath.bat]
set path=%path%;c:\Borland\Bcc55\Bin\;
C:\Borland\bcc55\Bin\ 폴더에 ilink32.cfg과 bcc32.cfg 2개의 파일을 위치시킨다.
C:\Borland\bcc55\ 폴더에 bccsetpath.bat 파일을 위치시킨다.
2.소스 파일 만들기
1)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);
}
2)dllgo.c(dllgo.exe)
__declspec(dllimport) void PrintHello( void );
__declspec(dllexport) void PrintVar( int a, int b);
int main( void )
{
PrintHello();
PrintVar( 1 , 2 );
return 0 ;
}
3)dllgopas.lpr(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.
3. 컴파일
C:\Borland\bcc55\work_spaces\dll_test>bcc32 -c dllmain.c
C:\Borland\bcc55\work_spaces\dll_test>bcc32 -tWD -WM -edllmain.dll dllmain.obj
C:\Borland\bcc55\work_spaces\dll_test>implib dllmain.lib dllmain.dll
C:\Borland\bcc55\work_spaces\dll_test>bcc32 dllgo.c dllmain.lib
C:\Borland\bcc55\work_spaces\dll_test>C:\lazarus\fpc\3.0.0\bin\i386-win32\fpc -B
dllgopas.lpr
4. 실행 결과 비교