2012-04-23 144 views
0

我有一個從.for(fortran)和.c源文件組合編譯的.exe文件。.lib文件和反編譯

它沒有任何東西不遲於Win98下運行,由於與圖形服務器錯誤:除非有周圍一些其他的方式

「訪問衝突錯誤在用戶32.DLL在Ox7e4467a9」

上面的錯誤(?),我假設我必須使用更先進的圖形服務器從源代碼重新編譯.exe。我有所有的文件來做這個吧.lib文件!

是否有可能從缺少的lib文件中提取任何有關當前.exe文件的信息?

可以拆卸.exe,但我認爲我從中獲益不大?

回答

1

你可能不能從可執行文件中「剪切」lib文件。即使你能以某種方式從中獲取代碼,標準編譯器和鏈接器也不會知道如何鏈接它,因爲它不需要鏈接信息(它們不包含在結果二進制文件中)。但是,如果你的問題是你的程序在Win98下工作,但是不能在基於NT的系統(XP,Vista,Win7)上運行,我想這會更容易發現,那裏有什麼不兼容性崩潰程序。你提到訪問衝突發生在user32.dll中。在調試器中啓動你的程序,看看發生崩潰的函數。確保你已經加載了你的PDB符號(所以你可以看到內部非公共函數的名字)。跟蹤調用哪個Win32 API以及它的參數是什麼。試圖弄清楚,內存中應該存在哪些不能訪問的內容。

也沒有任何其他信息,這是不可能的。

0

一旦集成到圖像文件(您的exe文件)中,靜態綁定到應用程序(由鏈接程序完成)的庫(您的.lib)不能分開,與您自己的代碼區分開來,不能通過反編譯exe來從lib中獲取代碼。