2013-03-13 4 views
0

외부 드라이버 DLL을 사용하는 동안 일부 프로그램에 문제가 있습니다.링크하는 동안 빌드 오류가 발생했습니다.

그것은 잘 컴파일하지만 난 그것을 빌드 할 때 내가 얻을 : 함수의

error LNK2001: unresolved external symbol "void __stdcall Function1(void (__fastcall*)(int))" ([email protected]@[email protected]@Z) 

헤더 정의 :

void __stdcall       Function1(TDeviceCallback callback); 

지금 이 프로젝트는 DLL은 "특이한 부분"입니다 장치 dll과 다른 응용 프로그램 사이의 프록시 역할을합니다.

개체/라이브러리를

winapims.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib 

프로젝트 옵션 :

winapims.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:no /pdb:"Release/test2.pdb" /machine:I386 /out:"Release/test2.fll" /implib:"Release/test2.lib" 
을 프록시 DLL이 일을 몇 가지 특별한 옵션을 구축해야하는 C 함수를 호출 할 수있는 해당 응용 프로그램의 제한에 감사합니다

내가 처음 수행 한 프록시는 아니지만 처음으로 그런 문제가있었습니다. 어떤 아이디어가 될 수 있을까요?

편집 : 문제는 프록시가 fastcall로 사용되어야한다는 것으로 보이지만

답변

0

문제가 당신 맹 글링 C++의 이름 것 ​​같다 링커는 그 기능 :(에서 변환에 문제가있다.이

소스 파일에서
#define MYLIB_API __declspec(dllexport) 
#ifdef __cplusplus 
extern "C" MYLIB_API int fnmylib(void); 
#else 
MYLIB_API int fnmylib(void); 
#endif 

당신이

MYLIB_API int fnmylib(void) 
{ ... } 
로 정의 헤더 파일에 다음과 같이 당신의 C 함수를 내 보내야합니다
관련 문제