2012-03-08 73 views
4

我尝试将C(\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ Platforms \ Win32 \ PlatformToolsets \ v71)的(工作)平台工具集的副本添加到Visual C++ 2005中,感。如何使用VS2003工具集从VS11内建立C++项目?

但是,当我尝试编译我的项目,输出是令人失望的:

1> Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 13.10.6030 for 80x86 
1> Copyright (C) Microsoft Corporation 1984-2002. All rights reserved. 
1> 
1> cl ÿþ/ 
1> 
1>cl : Command line warning D4024: unrecognized source file type 'ÿþ/', object file assumed 
1> Microsoft (R) Incremental Linker Version 7.10.6030 
1> Copyright (C) Microsoft Corporation. All rights reserved. 
1> 
1> /out:.exe 
1>  ■/ 
1>LINK : fatal error LNK1181: cannot open input file ' ■/.obj' 
========== Rebuild All: 0 succeeded, 1 failed, 0 skipped ========== 

看起来像一个字符集问题给我,但有没有人得到它的工作?

+0

只是好奇...你有增量链接启用? – 2012-03-15 14:16:29

+0

您是否确定所有资源对于该版本都是正确的? – Aleks 2012-03-20 12:06:45

+0

@Aleks存在vs2003的解决方案/ vcproj文件,它编译得很好。这不是源代码问题,它肯定隐藏在调用编译器的方式中。 – Timbo 2012-03-20 17:43:14

回答

0

我想如果你按照this链接,你会发现你正在寻找的答案。

它看起来像你cl.dll是数据不足或不正确的版本,所以你可能没有完全转换你的工具链。


在一个侧面没有,我很好奇,为什么在世界上你想覆盖文件为什么要尝试这种

+0

看起来像在该链接后面张贴的人有相同的错误信息...但他不想使用VC7.1,而我想:-) – Timbo 2012-03-20 17:44:48

+0

我正在维护一个C++类库,必须使用2003年和之后的每个MSVC编译器版本进行构建。是的,我知道在二进制界面中使用C++是一个坏主意,但这不是我可以改变的。无论何时将新文件添加到项目中,都必须手动添加到所有4个(即将为5个)项目文件。我可以将它降低到2(因为2005年通过VS11工作正常),但我真的很想摆脱2003年的项目/解决方案。 – Timbo 2012-03-20 17:47:32

+0

除非我错过了某些东西,否则您应该可以拥有一组C++源代码,并根据需要使用许多不同的工具链进行编译。这很复杂,可能是因为你必须通过VS – thecoshman 2012-03-21 08:29:01

0

?它应该与更改项目内的可执行文件目录一样简单。当它每当它寻找cl.exe/link.exe时,它将会去。 ProjectProperties->配置属性 - > VC++目录。只需创建一堆配置。并调整每个编译器。它应该工作得很好。 请注意,您可能需要调整来源,包括等等,但它们都应该可以工作。

+0

创建平台工具集是更为标准的方法。实质上,它也只会改变VS找到这些工具的目录。正如您在输出日志中看到的那样,正确的编译器已经启动,但由于某种原因它不喜欢它的参数。 – Timbo 2012-03-21 11:04:01

0

是有意义

我相信更换的一切,你错过了一个文件,因此你的cl.exe时拿起一个错误 版本依赖的DLL。

在我的微软的Visual Studio .NET 2003/VC7/bin文件夹我看到 下列文件,这将需要编译:

cl.exe Microsoft C/C++ Compiler Driver 
c1.dll Microsoft Visual C Compiler Front End 
c1xx.dll Microsoft Visual C++ Compiler Front End 
c2.dll Microsoft 80x86 Compiler Back End 

其他文件(ML.EXE,LINK.EXE,LIB .exe,...)也将需要 创建一个二进制文件。但是目前你没有编译。

对于C++项目,您将需要版本13.10.3077.0中的c1xx.dll。

顺便说一句:好主意。当我接近它时,我也想尝试它。如果你可以在这里发布最终的解决方案,我会感谢 。