我正在Visual Studio 2010 pro中编译旧的cpp MFC项目.
它使用使用Labview编译的dll,并且我添加这些信息,因为我不知道是什么导致错误消息..
error C2733: second C linkage of overloaded function 'function name' not allowed.
‘函数名’包括:’StrCatW’,’StrCmpNW’,’StrCmpW’,’StrCpyNW’和’StrCpyW’
我在网上发现了一个similar case.
虽然链接中的建议在我的情况下没有解决,我仍然看到相同的错误消息.
提前感谢任何人试图帮助.
解决方法
我没有MFC的经验,反正我会尽量回答.
当使用不同的参数集声明外部“C”函数时,会出现此错误消息.例如:
当使用不同的参数集声明外部“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很旧,它以某种方式声明具有char *参数的StrCatW,与其他声明冲突.
如果没有帮助,打开预处理输出(/ E编译器切换,就我所说) – 它将输出一个非常大的文件,所以在其中查找StrCatW,也许会给你一些线索上.