[ 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. 실행 결과 비교



: