Quali librerie devo collegare il mio mista-modalità di applicazione?
-
08-06-2019 - |
Domanda
Sto integrando .NET support nella nostra applicazione C++.
Si tratta di una vecchia scuola di applicazione MFC, con 1 file compilato con l' "/clr", opzione che fa riferimento a un CWinFormsControl.
Io non sono autorizzati a rimuovere il flag del linker "/NODEFAULTLIB".
(Abbiamo la nostra propria generazione del sistema di gestione, non di Visual Studio.)
Questo significa che devo specificare tutte le librerie necessarie:VC runtime e MFC.
Altre opzioni del compilatore include "/MD"
Accanto a questo:Non è possibile utilizzare il flag del linker "/FORZA:PIÙ" e basta aggiungere tutto:
Sto cercando un non-sovrapposizione di un set di librerie.
Soluzione 3
Come ho risolto:
- collegamento con "/FORZA:PIÙ /verbose" (che collega ok) e impostare l'uscita da parte.
- collegamento con "/NODEFAULTIB /verbose" e traccia di tutti unresolveds nell'output del passo precedente e aggiungere le librerie 1 da 1.
- Questo ha portato in camere doppie:"AAA.lib:XXX è già definito in BBB.lib"
- Poi finalmente ho capito:Ricompilato gestiti E non gestiti unità /MD e il collegamento (tra gli altri):mscoree.lib msvcmrt.lib mfcm80d.lib
Miscelazione /MT (non gestito) e /MD (gestito) che si è rivelato essere la cattiva idea:diversi(sovrapposti) e le librerie necessarie.
@ajryan:Dependcy Walker solo a me dice che dll sono, non quello che le librerie sono legati a quando il collegamento.(ad es.msvcmrt.lib ?) Penso che.
Grazie per le risposte!
Jan
Altri suggerimenti
Come minimo:
mscoree.lib MSVCRT.lib mfc90.lib (versione regolare in modo appropriato)
E l'iterazione da lì.
Utilizzare la creazione guidata per creare un bare-bones MFC app nel tuo stile (SDI o MDI / dialogo ) e poi mettere sul tuo dipende.