2011-11-24 14 views
7

Quando ho appena dichiaroBoost thread e compressione UPX == applicazione Win32 non valida?

boost::thread t1, t2; 

nel mio programma e quindi comprimere file .exe con UPX, la compressione riesce. Ma quando provo a lanciare l'exe compresso, Windows mi dice che è "applicazione Win32 non valida".

C'è un bug report per UPX (similar bug), ma ha messaggio di errore diverso ("L'applicazione non correttamente inizializzata (0xc0000005)").

Nel mio caso il sistema operativo pensa che il file sia danneggiato o qualcosa del genere, quindi non è nemmeno possibile iniziare a mostrare errori! Perché??

Win7x64, C++, VisualStudio, aumentare 1.47, UPX3.07

strane notizie:

  1. disimballaggio exe rende exe danneggiato che genera un errore esattamente lo stesso come here. ("L'inizializzazione dell'applicazione non è riuscita correttamente (0xc0000005)") E questo è per exe non decompresso, non compresso come nel rapporto bug .

  2. extern "C" void tss_cleanup_implemented(void) {} prima che l'inclusione dell'intestazione del thread di boost non sia importante. Il risultato è lo stesso.

main.cpp:

#include <boost/thread.hpp> 

int main(int argc, char** argv) 
{ 
    boost::thread t; 
    return 0; 
} 

Può essere che qualcuno cercherà di compilare e comprimere?

+1

Bene, la configurazione è configurata con boost tale da risultare in un eseguibile a 32 bit o è un eseguibile a 64 bit? (UPX su Windows non supporta i binari a 64 bit) http://sourceforge.net/tracker/?func=detail&aid=2859708&group_id=2331&atid=352331 – HostileFork

+0

eseguibile è 32bit – Sergey

+0

provato un altro packer, scrive solo "i callback tls non sono supportati " – Sergey

risposta

1

Il bug è stato riparato nella nuova versione 3.08. È a posto adesso.

Problemi correlati