Boost thread и сжатие UPX == не является приложением win32 - PullRequest
7 голосов
/ 24 ноября 2011

Когда я просто заявляю

boost::thread t1, t2;

в моей программе, а затем сжать файл .exe с помощью UPX, сжатие выполнено успешно. Но когда я пытаюсь запустить сжатый exe-файл, Windows сообщает мне, что это «недопустимое приложение win32».

Существует отчет об ошибке для UPX ( аналогичная ошибка ), но в нем есть другое сообщение об ошибке ( "Не удалось правильно инициализировать приложение (0xc0000005)" ).

В моем случае ОС считает, что файл поврежден или что-то в этом роде, поэтому его даже нельзя запустить, чтобы показать ошибки! Почему ??

Win7x64, C ++, VisualStudio, boost 1,47, UPX3,07

странные новости:

  1. Распаковка exe делает испорченный 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 Ответ

1 голос
/ 15 декабря 2011

Исправлена ​​ошибка в новой версии 3.08. Теперь все в порядке.

...