2010-10-22 613 views
11

我在Windows 7上有VS 2010.我創建了一個新項目,選擇了C++語言,Win32項目,DLL,導出符號,然後完。現在,當我編譯該項目沒有任何改變什麼VS會產生,我得到...Visual Studio 2010 - LINK:致命錯誤LNK1181:無法打開輸入文件「■/ .obj」

LINK:致命錯誤LNK1181:2008年能不能打開輸入文件「■/ .OBJ」

我也有VS安裝上同一臺機器。我遵循相同的步驟並編譯。我究竟做錯了什麼?

編輯 好吧,我發現這個錯誤是由於舊版本的鏈接器被使用。我不知道爲什麼。在VS2010中,項目目錄的設置與VS2008中的不同。一旦我弄清楚了,也許我可以解決我自己的問題。

+0

■是U + 25A0黑方塊。 – 2010-10-22 20:41:25

+0

這是一個奇怪的文件名! – Donotalo 2010-10-22 20:42:33

+0

@Andreas - 我不知道,我只是複製和粘貼。 @Donotalo,同意了,我沒有創建它。看看我的編輯,因爲我正在研究這個。 – Les 2010-10-23 02:48:33

回答

7

那麼發佈這個問題已經有一段時間了。我在前一段時間想出了一個解決方法,現在我將自己回答。但是,如果您有任何更好的想法或其他人可以從中受益的其他信息,請發佈。

我發現創建我的C++項目後,我需要刪除「Microsoft.Cpp.Win32.User」屬性表。如果我不這樣做,那麼我會得到上面的奇怪錯誤,但如果我刪除它們,那麼簡單的項目編譯就可以了。要刪除它們......

  1. 選擇查看 - >其他Windows的>屬性格式經理
  2. 展開屬性組(項目名稱)
  3. 展開全部配置(我是「調試|的Win32」和 「釋放|的Win32」)
  4. 多選 「Microsoft.Cpp.Win32.User」 屬性頁(每個配置下)
  5. 刪除
+1

Jeez,微軟似乎喜歡讓事情儘可能複雜 – Nodeocrat 2016-02-19 15:53:13

2

的Visual Studio 2012 - LINK :致命錯誤LNK1181:無法打開輸入文件「■/ .obj」 我正在使用VS 2012 !!!!

我已經追蹤了這一點。 對我來說,當我嘗試構建我的應用程序的x64位版本時,不會發生這種情況。我發現,我的項目.vcxproj有一個「ImportGroup條件」,看起來像這樣:

<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> 
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> 
    </ImportGroup> 

我也有一個對我的64位編譯,看起來像這樣:

<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets"> 
    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> 
    </ImportGroup> 

所以我花了看看這些文件:

Users\??????????\AppData\Local\Microsoft\MSBuild\v4.0 
Microsoft.Cpp.Win32.user.props 
Microsoft.Cpp.x64.user.props 

不同之處在於它們各不相同。 x64基本上是空的,而Win32有三條路徑。

Win32版本的部分包含三條路徑<ExecutablePath>,<IncludePath><LibraryPath>

我發現刪除<ExecutablePath>路徑導致此問題消失。我正在更深入地探索這條路,看看是否有任何東西出現在我身上,但我想我會把它傳遞出去,以防其他人發現這條路上出了什麼問題。

+0

看起來它與包含在路徑中的$(ExecutablePath)宏有關。我認爲。刪除它但是會導致找不到cl.exe。因此,也許搞清楚它能夠解決什麼問題,並且硬編碼代替宏的路徑可能會解決這個問題。 ??? – Mark 2014-01-27 15:17:58

0

我也在編譯Visual Studio 2017中的VC++項目時遇到了同樣的問題。編譯器抱怨以下內容。

LINK : fatal error LNK1181: cannot open input file " ■/.obj"

截至上分析問題,發現項目「配置屬性 - VC++目錄 - 可執行文件目錄」如下圖所示,以包含有其自身的link.exe的Microsoft Visual Basic文件夾C:\Program Files (x86)\Microsoft Visual Studio\VB98的路徑。

Visual Studio Executable Directories dialog

發生由於鏈接器錯誤Visual Studio中被調用的Visual Basic鏈接,而不是VISUAL C++連接器!

發生這種情況是因爲Visual Basic鏈接器的路徑在上面的對話框中列出第一個,因此Visual Studio首次遇到可執行目錄的路徑時遇到了Visual Basic linker.exe。

一種溶液的是通過從第一移動路徑VB98文件夾最後在可執行文件目錄更新包含路徑的順序。可以通過編輯$(USERPROFILE)\appdata\local\microsoft\msbuild\v4.0目錄中的Microsoft.Cpp.Win32.user.props等必需的屬性文件來實現。

相關問題