错误C2733不允许重载函数’function’的第二个C链接
我试图在Visual Studio 2010专业版中编译旧的cpp MFC项目。
它使用使用Labview编译的dll,我正在添加此信息,因为我不知道导致错误消息的原因。
错误消息显示在多个function上,所有相同的错误类型。
error C2733: second C linkage of overloaded function 'function name' not allowed.
‘function name’包括:’StrCatW’,’StrCmpNW’,’StrCmpW’,’StrCpyNW’和’StrCpyW’
我在网上发现了类似的案例 。
虽然在我的情况下链接中的建议没有解决,我仍然看到相同的错误消息。
提前感谢任何想要帮助的人。
我没有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
,也许它会给你一些线索上。