2015-06-27 38 views
1

我想運行我的第一個SFML應用程序。 我可以通過代碼塊環境運行它,但我無法通過資源管理器運行它 - 出現一個錯誤消息:「libgcc_s_sjlj-1.dll丟失」。我添加這些行到我的鏈接選項:「libgcc_s_sjlj-1.dll」不見了

-static 
-static-libgcc 
-static-libstdc++ 

但是,試圖編譯它之後,我看到了錯誤的生成日誌:

mingw32-g++.exe: error: unrecognized command line option '-static-libstdc++' 

我怎樣才能解決呢? 我的版本的GCC 4.7.1是TDM-1

回答

0

(如果你使用的是Windows,特別是7) 你可能要檢查在開始菜單的搜索欄PATH變量,搜索環境,然後單擊「編輯系統環境變量「。

在彈出窗口中,單擊環境變量,進入新彈出窗口的系統變量部分,然後查找路徑。單擊編輯並將整個事件複製到一個txt文件中(很長)。

你在看什麼是一堆不同的路徑,當試圖查找DLL等時首先被搜索。你需要檢查一個路徑是否指向你不再使用的編譯器。然後你會想檢查你的當前編譯器是否被提及。

如果您的編譯器沒有提到,請將其bin文件夾添加到該變量中,並確保使用分號跟隨它。確保不要弄亂任何路徑,並且還要保存第一次複製的路徑以防萬一。將所有內容複製回編輯欄並提交。

例如老路徑是

C:\Windows\System32 

所以添加你的編譯器像這樣;

C:\Windows\System32;C:\mingw64\bin  // bin should contain g++ and such 

希望您的程序現在可以編譯。幾個星期前我遇到了這個問題,這個方法對我很有幫助。如果不起作用,請將路徑變量改回原來的樣子,我很抱歉。

+0

它仍然沒有編譯:( – user3366592

+0

我知道的另一個選項是找到相關的文件(它將在您的編譯器的bin文件夾,如果它在您的計算機上的任何位置)並將其複製到您的項目文件夾,然後編譯用-static。你也許可以在網絡上找到相關的文件,但我不會推薦它。 – user4578093

1

GCC 4.7.1是一個相當老的版本,而-static-libstdc++是一個相當新的選擇。我相信 它在主GNU 4.7.x發行版中,但there is some corroborating evidence那 MinGW GCC 4.7.1沒有它。

無論如何,您不應該需要靜態鏈接默認庫。您的TDM-GCC安裝是32位版本。假設它 駐留在C:\TDM-GCC-32中,則libgcc_s_sjlj-1.dll駐留在C:\TDM-GCC-32\bin中。檢查它是否有 。如果沒有,您的TDM-GCC安裝就會中斷,您需要修復或重新安裝它。

否則,在Windows命令提示符或從資源管理器成功運行您的程序, C:\TDM-GCC-32\bin必須是在你的PATH環境變量。檢查是否是:(控制面板 - >系統和安全 - >系統 - >高級系統設置 - >環境變量 - >PATH)。

如果它存在,那麼我很爲難。如果沒有,追加;C:\TDM-GCC-32\binPATH和OK了。 通常重建程序(不-static-*選項),然後它將運行從資源管理器中,或者從您打開(不包含任何其他動態鏈接問題)一個命令提示符。

運行從代碼:: Blocks的程序的時候,因爲它 自動運行程序前的前綴與PATH的路徑名來配置 編譯的二進制文件,您不會遇到這個程序。

考慮升級到the latest TDM GCC distribution