更新C+;时已定义错误LNK2005+/VS 2013的Fortran解决方案 我试图从Visual Studio 2010到2013更新工作C++和FORTRAN解决方案。更新时,Win32平台会定期生成,但Win64会出现以下错误: error LNK2005: __CIpow already defined in libmmt.lib(pow_stub.obj) error LNK2005: _pow already defined in libmmt.lib(pow_stub.obj) fatal error LNK1169: one or more multiply defined symbols found

更新C+;时已定义错误LNK2005+/VS 2013的Fortran解决方案 我试图从Visual Studio 2010到2013更新工作C++和FORTRAN解决方案。更新时,Win32平台会定期生成,但Win64会出现以下错误: error LNK2005: __CIpow already defined in libmmt.lib(pow_stub.obj) error LNK2005: _pow already defined in libmmt.lib(pow_stub.obj) fatal error LNK1169: one or more multiply defined symbols found,c++,C++,我不知道为什么它只构建在Win32上,也不知道我能做些什么来解决这个问题。非常感谢您提供的任何帮助。由于细节太少,很难提供帮助,但这里有一些事情需要考虑 平台相关代码 代码出错并非不可能——例如,您可能拥有取决于所构建平台的#ifdef代码。这可能意味着您的Win32和Win64版本正在编译不同的代码。但您的代码在VisualStudio2010中成功构建的事实表明,这是不可能的 其中的一个变体可能是一个标准头,它在Visual Studio 2010和Visual Studio 2013之间以

我不知道为什么它只构建在Win32上,也不知道我能做些什么来解决这个问题。非常感谢您提供的任何帮助。

由于细节太少,很难提供帮助,但这里有一些事情需要考虑

平台相关代码 代码出错并非不可能——例如,您可能拥有取决于所构建平台的
#ifdef
代码。这可能意味着您的Win32和Win64版本正在编译不同的代码。但您的代码在VisualStudio2010中成功构建的事实表明,这是不可能的

其中的一个变体可能是一个标准头,它在Visual Studio 2010和Visual Studio 2013之间以某种依赖于平台的方式发生了更改。但这也不太可能——事情不应该仅仅因为你包含了一个标题就破裂

平台相关属性 多平台解决方案中生成错误的一个常见来源是两个平台的项目设置不同。当然,有些属性在Win32和Win32 64之间应该是不同的,但其他属性应该是相同的,或者应该是“相同”的,因为它们使用相同设置的32位和64位版本

这两个平台之间的意外差异值得查看所有项目设置。由于您遇到链接器错误,因此特别值得检查链接器的“附加库目录”和“附加依赖项”设置。请记住,x64代码必须链接到x64版本的文件-可以使用不同的文件名,也可以链接到x64特定目录中的文件

查找属性变化的一个技巧是打开项目属性并将“平台”设置为“所有平台”。然后查找值为“”的单个属性我认为这在Visual Studio 2013中有效,在Visual Studio 2015中肯定有效(对不起,我没有在方便的地方安装VS 2013)

链接器诊断 另一种可能的方法是打开并比较Win32和Win64版本的输出。将有很多输出,但您可以使用“查找”或diff工具查找
\u CIpow
\u pow
链接的位置/方式的差异,这可能会给您提供线索。坏消息是它可能不会直接指向问题的原因。你必须从链接器实际做的事情开始反向工作,结合一些侦探工作和实验来找出实际发生的事情

突破性变化 从VisualStudio2010升级到VisualStudio2013的另一种可能性是破坏更改。你必须仔细阅读一份清单,一份清单,一份清单,一份清单,一份清单,一份清单,一份清单,一份清单,一份清单,一份清单,一份清单,一份清单,一份清单,一份清单

事故 如果尚未执行此操作,则应确认解决方案的Visual Studio 2010版本已成功为Wn32和Win64生成

假设是这样,请使用您最喜欢的diff工具比较2010和2013版本的.sln和.vcxproj文件。寻找在当前上下文中似乎没有意义的更改。总是有可能不经意间改变了某些东西


最后,如果您的系统同时安装了Visual Studio 2010和Visual Studio 2013,则可以使用该属性使用Visual Studio 2013使用Visual Studio 2010工具集构建项目。如果您发现解决方案使用2010(v100)工具集成功编译和链接,但使用2013(v120)工具集失败,这可能会告诉您一些事情。

您是否尝试使用VS 2013重建所有依赖项?看起来您有一个pow_stub.cpp,应该从编译中排除