使用外部驱动程序 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,但链接器在该函数中的转换存在问题:(