我正在尝试在Visual Studio 2010专业版中编译旧的cpp MFC项目。
它使用使用Labview编译的dll,我正在添加此信息,因为我不知道导致错误消息的原因。
错误消息显示在多个函数上,所有错误类型都相同。
error C2733: second C linkage of overloaded function 'function name' not allowed.
'function name'包括:'StrCatW','StrCmpNW','StrCmpW','StrCpyNW'和'StrCpyW'
我在网上找到了similar case。
虽然链接中的建议在我的情况下没有解决,但我仍然看到相同的错误消息。
提前感谢任何想要帮助的人。
答案 0 :(得分:15)
我没有MFC的经验,无论如何我会尝试回答。
当使用不同的参数集声明extern "C"
函数时,会出现此类错误消息。例如:
extern "C" int myfunc(int);
extern "C" int myfunc(char);
在您的情况下,这两个声明可能与char*
:
extern "C" char* StrCatW(char*, char*);
extern "C" wchar_t* StrCatW(wchar_t*, wchar_t*);
尝试关闭解决方案中的Unicode支持:我猜,如果dll真的很旧,它会以某种方式声明StrCatW
char*
个参数,与其他声明冲突。
如果这没有帮助,打开预处理输出(/E
编译器开关,据我记忆) - 它将输出一个非常大的文件,所以在其中寻找StrCatW
,也许它会给你一些关于发生了什么的线索。