Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c链接时生成错误_C - Fatal编程技术网

c链接时生成错误

c链接时生成错误,c,C,我在使用外部驱动程序dll时遇到一些程序问题 它编译得很好,但当我尝试构建它时,我得到: error LNK2001: unresolved external symbol "void __stdcall Function1(void (__fastcall*)(int))" (?Function1@@YGXP6IXH@Z@Z) 函数的标题定义: void __stdcall Function1(TDeviceCallback callba

我在使用外部驱动程序dll时遇到一些程序问题

它编译得很好,但当我尝试构建它时,我得到:

error LNK2001: unresolved external symbol "void __stdcall Function1(void (__fastcall*)(int))" (?Function1@@YGXP6IXH@Z@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,但链接器在该函数中的转换有问题:(

问题似乎是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)
{ ... }