2013-01-31 26 views
10

編譯與VS11 libffi提供了以下鏈接錯誤用VS2012編譯libffi失敗致命錯誤LNK1281:無法生成SAFESEH圖像

libffi\libffi-3.0.9\ms\Win32\Debug\ffi.dll : fatal error LNK1281: Unable to generate SAFESEH image. 

同一項目編譯罰款與VS10,但自動升級後與VS2012 ,它開始給鏈接錯誤

MSDN的解釋是太神祕和最有幫助的

我可能會/SAFESEH:NO重建,但我不確定的寓意。

請告知可能出錯的地方。

回答

20

沒有SAFESEH的主要含義是您的應用程序將不被Windows 8商店或Windows 8 desktop certification接受。如果這對您不是問題,那麼請隨時使用/SAFESEH:NO

documentation說:

爲連接器的最常見原因不能夠產生的圖像是因爲一個或多個輸入文件(模塊)的連接器的不符合安全兼容異常處理程序功能。模塊不能與安全異常處理程序兼容的常見原因是因爲它是使用Visual C++以前版本的編譯器創建的。

是否有可能項目升級到VS2012將設置更改爲/SAFESEH:YES。也許你從來沒有與SAFESEH建設。

+0

非常感謝。你是一個救世主。順便說一句,你知道這是否記錄在某個地方'沒有SAFESEH的主要含義是你的應用程序不會被Windows 8商店接受。如果這不是你的問題,那麼你應該使用/ SAFESEH:NO。 ' – Abhijit

+0

我不認爲你會找到任何文件。您可以輕鬆地發現Windows 8商店需要SafeSEH。但至於它的主要含義,這不會寫在任何地方,主要是一個觀點。 SafeSEH已經存在很長時間了。許多編譯器甚至無法生成它所需的異常表。當然它會消失,因爲它只對32位應用程序有意義。寫一個64位的應用程序,你的可執行文件必須包含異常表。 –

+1

謝謝!我喜歡在StackOverflow上搜索並找到與我的問題完全匹配的命中! – cplotts

相關問題