2013-03-13 97 views
0

我在使用外部驅動程序DLL時遇到了一些程序問題。c鏈接時出現錯誤

它編譯罰款,但是當我嘗試建立我得到它:函數的

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

頭定義:

void __stdcall       Function1(TDeviceCallback callback); 

現在的「不尋常的部分」 這個項目是一個DLL,就像設備DLL和其他應用程序之間的代理一樣。 由於該應用程序能的限制調用C函數代理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" 

這不是我做的第一個這樣的代理,但這是我第一次遇到這樣的問題。任何想法它可能是什麼?

編輯: 的問題似乎是,代理有可能被用來作爲FASTCALL但鏈接與剛剛在功能:(轉換問題

回答

0

看來這個問題是C++的名字改編你。需要導出你的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) 
{ ... }