错误C2733不允许重载函数'function'的第二个C链接

时间:2011-10-20 18:08:46

标签: c++ c visual-studio-2010 visual-c++

我正在尝试在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

虽然链接中的建议在我的情况下没有解决,但我仍然看到相同的错误消息。

提前感谢任何想要帮助的人。

1 个答案:

答案 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,也许它会给你一些关于发生了什么的线索。