错误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 ,也许它会给你一些线索上。