|
현재 프로젝트를 Delphi로 진행중인데, 마그네틱 카드 발급기를 사용하게 되었습니다.
그런데, 발급기 SDK 에는 VC++ 용으로 제작된 .h 파일과 .lib 파일만 있습니다. dll 파일은 없구요.
그래서 .lib 파일을 Delphi에서 바로 사용할 수가 없어서 BCB 로 .lib 파일을 사용할 수 있는 Wrapping dll 을 만들어서 Delphi 에서 사용할려고 합니다.
coff2omf 로 .lib 는 빌더용으로 만들었구요.
새 dll 프로젝트를 실행해서 프로젝트에 .h 파일과 .lib 파일을 add 해서 컴파일은 되었습니다.
근데, lib에 있는 함수를 밖으로 빼 내는 과정에서 링크에러가 나는군요.
// SetTopCoatMode 함수를 사용하도록 dll 함수만 선언
extern "C" __export __stdcall BOOL SetTopCoatModeW(HDC hDC, BOOL bEnable)
{
return SetTopCoatMode(hDC, bEnable); // .lib 파일에 있는 함수 호출
}
위와 같이 dll 을 제작했는데
[Linker Error] Unresolved external '_SetTopCoatMode' referenced from ....\UNIT1.OBJ
와 같은 에러가 발생하였습니다.
함수선언문에서 extern "C" __export __stdcall 이 부분을 빼고 컴파일 하면 컴파일은 되더군요. -_-;
선언을 잘못 한건가요? 오랜만에 BCB를 잡아보니 영~ 적응이 잘 안되서요.
원인을 가르쳐 주시거나 혹은 .lib 를 델파이에서 사용하는 더 쉬운 방법 등의 아이디어가 있으시면 조언 부탁드립니다.
혹시나 해서 원본 .h 파일과 .lib 파일을 함께 올려봅니다. 고맙습니다.
|