2011-11-24 45 views
7

當我剛剛宣佈Boost線程和UPX壓縮==無效的win32應用程序?

boost::thread t1, t2; 

在我的程序後再用UPX .exe文件,壓縮成功。但是,當我嘗試啓動壓縮exe文件時,Windows告訴我它是「無效的win32應用程序」。

沒有爲UPX(similar bug)bug報告,但它有不同的錯誤信息(「應用程序未能正確初始化(0000005)」)。

在我的案例OS認爲文件損壞或什麼的,所以它不能甚至開始顯示錯誤!爲什麼??

Win7x64,C++,VisualStudio的,提高1.47,UPX3.07

怪新聞:

  1. 壓縮EXE使損壞的exe文件是完全一樣的 拋出錯誤爲here。 (「應用程序未能正確初始化 (0000005)」),這是解壓縮EXE,而不是裝在錯誤 報告。

  2. extern "C" void tss_cleanup_implemented(void) {} 包含boost的線程頭之前並不重要。 結果是一樣的。

main.cpp中:

#include <boost/thread.hpp> 

int main(int argc, char** argv) 
{ 
    boost::thread t; 
    return 0; 
} 

可能有人會嘗試編譯和壓縮?

+1

那麼,是您的構建設置了提升,使得它導致32位可執行文件,或者是一個64位可執行文件? (在Windows UPX不支持64位二進制)http://sourceforge.net/tracker/?func=detail&aid=2859708&group_id=2331&atid=352331 – HostileFork

+0

可執行文件是32位 – Sergey

+0

嘗試另一種包裝,它只是寫道:「TLS回調不支持「 – Sergey

回答

1

在新版本3.08中修復了錯誤。現在沒事了。

相關問題