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.

È stato utile?

Soluzione 3

Come ho risolto:

  1. collegamento con "/FORZA:PIÙ /verbose" (che collega ok) e impostare l'uscita da parte.
  2. collegamento con "/NODEFAULTIB /verbose" e traccia di tutti unresolveds nell'output del passo precedente e aggiungere le librerie 1 da 1.
  3. Questo ha portato in camere doppie:"AAA.lib:XXX è già definito in BBB.lib"
  4. 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.

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