2012-03-08 38 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。

順便說一句:好主意。當我接近它時,我也想嘗試它。如果你可以在這裏發佈最終的解決方案,我會感謝 。

相關問題