visual-c++ linker設定 - 為什麼在Visual Studio中編譯C++項目時發生致命錯誤“LNK1104:無法打開文件'C:\ Program.obj'”?




2017 settings (17)

我在Visual Studio 2008中創建了一個新的C ++項目。沒有編寫代碼; 只有項目設置已更改。

當我編譯該項目時,我收到以下致命錯誤:

致命錯誤LNK1104:無法打開文件'C:\ Program.obj'


Answers

我有同樣的問題。它由一個“,”在一個額外的庫路徑文件夾的名稱造成的。它通過更改額外的庫路徑解決。


我的問題是缺少.lib擴展名,我只是連接到mylib而VS決定尋找mylib.obj


我有同樣的問題,但我的案例解決方案沒有列在答案中。 我的防病毒程序(AVG)將文件MyProg.exe確定為病毒,並將其放入“病毒庫”中。 你需要檢查這個庫,如果有文件 - 那麼就恢復它。 它幫助我。


我在回答,因為我沒有看到其他人列出的這個特定的解決方案。

顯然,我的殺毒軟件(Ad-Aware)正在標記我的項目中的一個項目依賴並刪除它。 即使在排除DLL所在的目錄之後,仍會繼續相同的行為,直到重新啟動計算機。


我通過一個現有的項目 添加 我的解決方案中解決 這個問題 ,我忘記了第一次添加 項目



這個特定的問題是由指定一個依賴於一個在其路徑中有空格的lib文件引起的。 該路徑需要用項目的引號包圍以正確編譯。

在項目屬性配置屬性 - >鏈接器 - >輸入選項卡上,有一個附加依賴項屬性。 此問題已通過將此屬性更改為:

C:\ Program Files \ sofware sdk \ lib \ library.lib

至:

“C:\ Program Files \ sofware sdk \ lib \ library.lib”

我在哪裡添加了引號。


我遇到了同樣的問題,我剛剛將代碼複製到新項目並開始構建。 其他一些錯誤開始了。 錯誤C4996:'fopen':此函數或變量可能不安全。 考慮使用fopen_s代替

為了再次解決這個問題,我已經在Project項目中添加了我的一個屬性,如下所示。 項目 - >屬性 - >配置屬性 - > c / c ++。 在這個類別中有字段名稱預處理器定義我已經添加_CRT_SECURE_NO_WARNINGS這個來解決問題希望它能幫助...

謝謝


我有同樣的錯誤:

fatal error LNK1104: cannot open file 'GTest.lib;'

這是由於; 最後。 如果你有多個庫,它們應該用空格(空格)分隔,不要用逗號或分號。

所以不要使用; 或者在項目屬性>>配置屬性>>鏈接器>>輸入中列出庫時的任何其他內容


解決方案1(對於我的情況):重新啟動Windows資源管理器進程(是的,Windows文件管理器)。

解決方案2:

  1. 關閉Visual Studio。 Windows註銷
  2. 登錄,重新打開Visual Studio
  3. 照常建造。 它現在構建並可以訪問有問題的文件。

我認為有時候文件系統或者控制它的人會因為權限而丟失。 重新啟動Windows會話之前,試圖殺死殭屍msbuild32.exe進程,重新啟動Visual Studio,甚至檢查沒有顯示問題文件。 沒有構建配置問題。 它偶爾會發生。 Windows中的某些內部事物沒有修復,需要重新啟動。


就我而言,這是一個錯誤指導的參考。 項目引用了另一個項目的輸出,但後者沒有輸出前者正在尋找的文件。


關閉並重新打開Visual Studio後,問題消失了。 不知道為什麼發生問題,但這可能值得一試。

這是在VS 2013 Ultimate,Windows 8.1上。


對於裝配項目(ProjectName - > Build Dependencies - > Build Customizations - > masm(selected)),將生成預處理源列表設置為True也會給我帶來問題,清除設置會修復它。 VS2013在這裡。


我有這個問題與LNK2038錯誤一起,在此後分離RELEASE和DEBUG DLL。 在這個過程中,我清理了這些依賴關係所在的整個文件夾。

幸運的是,我對所有這些文件進行了備份,並獲得了該錯誤被扔回DEBUG文件夾以解決問題的文件。 錯誤代碼在某種程度上具有誤導性,因為我不得不花費大量時間從這篇文章的答案中再次看到這篇技巧。

希望得到這個答案,幫助有需要的人。


在我的情況下,我用GLM替換了之前的Game Engine Graphics課程的數學庫文件。 問題在於我沒有將它們添加到Visual Studio的解決方案資源管理器中的項目中(即使它們在項目存儲庫中)。


我有同樣的錯誤,只是我已經安裝了一個Nuget包(一個不是頭文件),然後嘗試卸載。
我的錯在於我還包括一個頭文件,我只是在我的一個.cpp文件中卸載了這個包(非常愚蠢,是的)。
我甚至在Project -> Properties -> Linker -> General刪除了額外的庫目錄鏈接,但當然沒有用,因為我仍然試圖引用不存在的頭文件。

在這種情況下肯定是一個令人困惑的錯誤信息,因為標題名稱是<boost/filesystem.hpp>但錯誤給了我"cannot open file 'llibboost_filesystem-vc140-mt-gd-1_59.lib'"並且沒有行號或任何內容。


我還打算建議“readelf -d”,但也要確保你使用LDFLAGS =“ - Wl, - as-needed”構建,如果你還沒有。 這將使您不那麼頻繁地解決這個問題。 Portage 2.2的保留庫很不錯,但我認為它主要是因為它而被屏蔽 - 它確實有缺陷。





visual-c++ linker