2011-11-24 13 views
7

私はちょうど私のプログラムでブーストスレッドとUPX圧縮==有効なwin32アプリケーションはありませんか?

boost::thread t1, t2; 

を宣言して、UPXで.exeファイルを圧縮すると、圧縮が成功します。しかし、私が圧縮されたexeを起動しようとすると、Windowsは "有効ではないwin32アプリケーション"だと私に伝えます。

はUPX(similar bug)のためのバグレポートがありますが、それは(「アプリケーションが正常に(0xc0000005)に初期化に失敗しました」)が別のエラーメッセージがあります。

私の場合、OSはファイルが壊れていると思っているので、エラーを表示することさえできません!なぜ??

Win7x64、C++、VisualStudioを、1.47を高め、UPX3.07

奇妙なニュース:

  1. exeファイルの開梱はhereとして まったく同じエラーがスローされ、破損したexeファイルを作ります。 ("アプリケーションが正しく初期化できませんでした (0xc0000005)")これはアンパックされたexeのためのもので、バグ レポートのようにパックされていません。

  2. extern "C" void tss_cleanup_implemented(void) {} ブーストのスレッドヘッダーを含める前に問題はありません。 の結果は同じです。

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

実行可能ファイルは32bit – Sergey

+0

別のパッカーを試したところ、 "tlsコールバックはサポートされていません" – Sergey

答えて

1

バグは新しいバージョン3.08で修復されました。今は大丈夫です。

関連する問題