안녕하세요.
VC++ Dll을 Delphi에서 호출하는데 시작부터 자꾸 에러네요...
#if defined(_WIN32) && defined(_DLL)
#ifdef EFLUX_EXPORTS
#define efx_api __declspec(dllexport)
#else
#define efx_api __declspec(dllimport)
#endif
#else
#define efx_api
#endif
efx_api UINT32 efx_get_ticks();
이런 DLL을
Delphi에서
function efx_get_ticks : smallInt; stdcall; external 'efluxd.dll';
이런식으로 선언을 했더니 컴파일은 되는데
위의 함수를 불러서 코딩만 해놔도 실행이 안되네요..
해결방안을 아시면 좀 부탁드립니다.
DLL Function을 소스에 추가하면 바로 에러가 나는것은
DLL내에서 해당 Function을 찾지 못해서 발생하는 경우가 대부분입니다.
다시한번 선언 및 Export가 제대로 되어있는지 확인하셔야 할것같습니다.
예제.
[ VC++ DLL ]
__declspec(dllexport) int TestAdd(int a, int b)
{
return ((a << 8) + b);
}
[ Delphi ]
function TestAdd(a, b: Integer): Integer; stdcall; external 'Test.dll';
procedure TForm1.Button6Click(Sender: TObject);
var
a, b, c: Integer;
begin
a := Random(255);
b := Random(255);
c := TestAdd(a, b);
ShowMessage(Format('DLL Function Test (%d+%d=%d)', [a, b, c]));
end;
이상입니다. ^^ 즐거운 하루되세요~