2013-03-13 95 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) 
{ ... }