Domanda

Se faccio un LoadLibrary ( "msvcrt.dll") ho bisogno di inizializzare la CRT in qualche modo? Sezione 2 nel seguente documento sembra dire che lo faccio, ma ottengo solo un errore simbolo indefinito per _CRT_INIT quando provo a chiamata _CRT_INIT:

http://support.microsoft.com/kb/94248

Modifica: Avrei dovuto dire che questo è un programma che carica in modo dinamico tutte le DLL che utilizza, quindi la chiamata a LoadLibrary ( "msvcrt.dll")

.
È stato utile?

Soluzione

Se si lavora in C ++, avete dichiarato _CRT_INIT come extern "C"?

Hai provato a usare l'utilità DUMPBIN ( http://support.microsoft.com/kb/177429 -? se non avete il vostro PATH voi stessi, dovrete utilizzare il Visual Studio Prompt dei comandi credo) con l'interruttore /EXPORTS per vedere quali funzioni sono disponibili presso il CRT DLL, solo per controllare due volte

Se ti trovi in ??difficoltà, VS2005 e precedenti (e presumibilmente in seguito ...) vengono forniti con il codice sorgente per la libreria di runtime. Per VS2005, questo è in VC/crt/src, rispetto al VS cartella di installazione. Sembra _CRT_INIT è il nome giusto -. Vedi crtdll.c e dllcrt0.c, ed è una funzione C

Altri suggerimenti

DllMain() chiamata in esso. Se si basa sul runtime C, si chiamerà CRT_INIT.

Ma una domanda di gran lunga migliore è che se un programma sta utilizzando qualcosa in msvcrt, non c'è bisogno di caricare in modo esplicito la dll e inizializzare, quindi perché stai facendo questo?

Non si deve chiamare _CRT_INIT () , ma chiamata CRT_INIT () (se proprio deve)

Il collegamento si fa riferimento si riferisce all'utilizzo di CRT_INIT () solo quando "Utilizzo del CRT librerie quando si costruisce una DLL" , e anche allora non è che una delle due alternative ; il primo, probabilmente essendo preferibile in maggior parte dei casi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top