gpt4 book ai didi

链接时出现c构建错误

转载 作者:行者123 更新时间:2023-11-30 17:53:52 25 4
gpt4 key购买 nike

我在使用外部驱动程序 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" 

这不是我第一次做这样的代理,但这是我第一次遇到这样的问题。有什么想法吗?

编辑:问题似乎是代理必须用作快速调用,但链接器仅在该函数中存在转换问题:(

最佳答案

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

关于链接时出现c构建错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15387006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com