Non sono sicuro del motivo per cui tutti consigliano di non utilizzare la libreria standard
. Questo metodo presuppone che tu voglia che il tuo codice sia eseguito su Windows 2000 o successivo e non preoccuparti di perdere il supporto per Win 9x. È comunque possibile utilizzare la libreria standard C/C++ - È possibile utilizzare l'opzione /MT
in/pagine C++ Codice generazione, che collegheranno nella libreria standard C statico del progetto.
Tuttavia, due note, la prima da me: l'idea di avere una libreria standard collegato dinamicamente è che tutti i bug nel otterrà patch da Windows Update (in teoria). Se si collega la libreria in modo statico, è necessario ridistribuire l'applicazione per correggere i bug della libreria standard. Quindi non è consigliato.
In secondo luogo, dal l'articolo di MSDN sulla compiler options:
Attenzione Non mescolare statica e versioni dinamiche dei runtime librerie. Avere più di una copia delle librerie di runtime in un processo può causare problemi, perché statici dati in una copia non è condiviso con l'altra copia. Il linker impedisce voi dal collegamento con sia statica che versioni dinamiche all'interno di un file exe, ma è ancora possibile finire con due (o più ) copie dei runtime librerie. Ad esempio, una libreria di collegamento dinamico collegato con le statiche (non-DLL) versioni del runtime librerie possono causare problemi quando viene utilizzato con un file exe che è stato collegato con la dinamica (DLL) versione di le librerie di runtime . (Si dovrebbe anche evitare di mescolare i di debug e non di debug versioni delle librerie in uno processo.)
In breve, facendo questo può causare confusione se si tenta di costruire in altri componenti collegati contro un dinamico libreria standard collegata.
Ovviamente, l'altro lato negativo è che questo renderà anche il tuo eseguibile più grande.
Modifica: il risultato, in depends.exe, è simile a questo: (ovviamente, sto usando Windows a 64 bit, che è disponibile solo per XP e versioni successive ... se vuoi sapere che cosa sembra come nelle finestre a 32 bit, immagina se gli 64
non fossero lì!).
fonte
2011-01-25 01:35:37
+1 Questo è l'epitome di una buona domanda SO. –
Qual è lo scopo di questo programma, se posso chiedere? –
Sto implementando l'iniezione di codice da un processo a 64 bit a un processo a 32 bit e ho bisogno di un programma di supporto a 32 bit per trovare l'indirizzo di alcune funzioni. – DxCK