私はちょうど私のプログラムでブーストスレッドとUPX圧縮==有効なwin32アプリケーションはありませんか?
boost::thread t1, t2;
を宣言して、UPXで.exeファイルを圧縮すると、圧縮が成功します。しかし、私が圧縮されたexeを起動しようとすると、Windowsは "有効ではないwin32アプリケーション"だと私に伝えます。
はUPX(similar bug)のためのバグレポートがありますが、それは(「アプリケーションが正常に(0xc0000005)に初期化に失敗しました」)が別のエラーメッセージがあります。
私の場合、OSはファイルが壊れていると思っているので、エラーを表示することさえできません!なぜ??
Win7x64、C++、VisualStudioを、1.47を高め、UPX3.07
奇妙なニュース:
exeファイルの開梱はhereとして まったく同じエラーがスローされ、破損したexeファイルを作ります。 ("アプリケーションが正しく初期化できませんでした (0xc0000005)")これはアンパックされたexeのためのもので、バグ レポートのようにパックされていません。
extern "C" void tss_cleanup_implemented(void) {}
ブーストのスレッドヘッダーを含める前に問題はありません。 の結果は同じです。
main.cppに:
#include <boost/thread.hpp>
int main(int argc, char** argv)
{
boost::thread t;
return 0;
}
は誰かがコンパイルしようと圧縮されることができますか?
あなたのビルドは、32ビットの実行可能ファイルとなるか、または64ビットの実行ファイルになるように、ブーストでセットアップされていますか? (Windows上のUPXは64ビットバイナリをサポートしていません)http://sourceforge.net/tracker/?func=detail&aid=2859708&group_id=2331&atid=352331 – HostileFork
実行可能ファイルは32bit – Sergey
別のパッカーを試したところ、 "tlsコールバックはサポートされていません" – Sergey