私が宣言するとき
boost::thread t1, t2;
私のプログラムで.exeファイルをUPXで圧縮すると、圧縮は成功します。しかし、圧縮されたexeを起動しようとすると、Windowsは「有効なwin32アプリケーションではない」と表示します。
UPXのバグレポート(同様のバグ)がありますが、異なるエラーメッセージが表示されます(「アプリケーションを正しく初期化できませんでした(0xc0000005)」)。
私の場合、OSはファイルが破損しているか何かを認識しているため、エラーを表示し始めることさえできません。なぜ??
Win7x64、C ++、VisualStudio、ブースト1.47、UPX3.07
奇妙なニュース:
exeを解凍すると、こことまったく同じエラーをスローする破損したexeが作成されます。(「アプリケーションは正しく初期化できませんでした(0xc0000005)」)これは解凍されたexe用であり、バグレポートのようにパックされていません。
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;
}
誰かがコンパイルして圧縮しようとするかもしれませんか?