7

私が宣言するとき

boost::thread t1, t2;

私のプログラムで.exeファイルをUPXで圧縮すると、圧縮は成功します。しかし、圧縮されたexeを起動しようとすると、Windowsは「有効なwin32アプリケーションではない」と表示します。

UPXのバグレポート(同様のバグ)がありますが、異なるエラーメッセージが表示されます(「アプリケーションを正しく初期化できませんでした(0xc0000005)」)。

私の場合、OSはファイルが破損しているか何かを認識しているため、エラーを表示し始めることさえできません。なぜ??

Win7x64、C ++、VisualStudio、ブースト1.47、UPX3.07

奇妙なニュース:

  1. exeを解凍すると、こことまったく同じエラーをスローする破損したexeが作成されます。(「アプリケーションは正しく初期化できませんでした(0xc0000005)」)これは解凍された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;
}

誰かがコンパイルして圧縮しようとするかもしれませんか?

4

1 に答える 1

1

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

于 2011-12-15T17:09:00.943 に答える