Visual c++ 是否可以链接c++/具有静态vc++;解放党

Visual c++ 是否可以链接c++/具有静态vc++;解放党,visual-c++,mfc,c++-cli,linker-errors,Visual C++,Mfc,C++ Cli,Linker Errors,我让c++/cli dll链接到vc++dll,但在使用vc++库的静态版本进行尝试时,会出现一系列链接器错误。我想使用static,这样我就不必将所有其他vc++dll文件复制到我的主c#项目中,该项目使用c++/cli dll vc++库具有以下属性: *内置vs2008 *静态库 *在静态库中使用MFC *没有公共语言运行时支持 c++/cli库具有以下属性: *内置vs2010 *动态库 *在共享DLL中使用MFC *公共语言运行时支持 *链接器->输入包含vc++库文件 在vs2010

我让c++/cli dll链接到vc++dll,但在使用vc++库的静态版本进行尝试时,会出现一系列链接器错误。我想使用static,这样我就不必将所有其他vc++dll文件复制到我的主c#项目中,该项目使用c++/cli dll

vc++库具有以下属性:
*内置vs2008
*静态库
*在静态库中使用MFC
*没有公共语言运行时支持

c++/cli库具有以下属性:
*内置vs2010
*动态库
*在共享DLL中使用MFC
*公共语言运行时支持
*链接器->输入包含vc++库文件

在vs2010中构建之后,我尝试将vc++库链接到它,但没有任何帮助

所以我从nafxcwd.lib中得到了90个LNK2005错误,如下所示:

1> nafxcwd.lib(dlgprop.obj):错误LNK2005:“public:struct _PROPSHEETPAGEA&_thiscallcpropertypage::GetPSP(void)”(?GetPSP@CPropertyPage@@QEAAU_PROPSHEETPAGEA@@XZ)已在mfc100d.lib(mfc100d.dll)中定义

然后像这样的30个左右: 1> libcmtd.lib(sprintf.obj):错误LNK2005:_msvctd.lib(MSVCR100D.dll)中已定义sprintf

然后是三个LNK4098警告:

链接:警告LNK4098:defaultlib'msvctd.lib'与其他lib的使用冲突;使用/NODEFAULTLIB:library 1> 链接:警告LNK4098:defaultlib'nafxcwd.lib'与其他lib的使用冲突;使用/NODEFAULTLIB:library 1> 链接:警告LNK4098:defaultlib'libcmtd.lib'与其他lib的使用冲突;使用/NODEFAULTLIB:library

然后我得到最后一个错误: libcmtd.lib(crt0.obj):错误LNK2019:函数\uu tmaincrstartup中引用的未解析外部符号main

我在msdn上查找了LNK4098警告,解决方案是将冲突库添加到链接器输入设置中的IgnoreSpecific Default libraries条目中,但这没有帮助

谢谢,

alex

您无法将(C++)库与不同版本的VS编译器链接(有时它可能会意外地工作,但您通常很难在以后诊断崩溃)。此外,您的错误似乎是选择不同CRT配置(单线程/多线程、调试/发布等)的典型错误。

尝试以下操作:在您的配置中,即“libcmtd.lib”ok,我将libcmtd.lib和nafxcwd.lib添加到忽略特定的默认库中,这些链接器错误会消失,但是我得到了这些与vc++库有关的代码,比如:1>GuiD.lib(TreePropSheet.obj):错误LNK2001:未解析的外部符号“public:static struct CRuntimeClass const CPropertySheet::classCPropertySheet”(?classCPropertySheet@CPropertySheet@@2UCRuntimeClass@@B)