Ce biblioteci trebuie să îmi dau legătura între aplicația mea mixtă?

I'm integrating .NET support into our C++ application.
It's an old-school MFC application, with 1 extra file compiled with the "/clr" option that references a CWinFormsControl.

I'm not allowed to remove the linker flag "/NODEFAULTLIB".
(We have our own build management system, not Visual Studio's.)
This means I have to specify all necessary libraries: VC runtime and MFC.

Alte opțiuni de compilatoare includ "/ MD"

Next to that: I can't use the linker flag "/FORCE:MULTIPLE" and just add everything:
I'm looking for a non-overlapping set of libraries.

0
fr hi bn

3 răspunsuri

Utilizați aplicația AppWizard pentru a crea o aplicație MFC cu oase goală în stilul dvs. (SDI/MDI/dialog), iar apoi puneți-vă în funcțiune .

0
adăugat

Cum l-am rezolvat:

  1. link-ul cu "/ FORCE: MULTIPLE/verbose" (care leagă ok) și setați ieșirea deoparte.
  2. legătura cu "/ NODEFAULTIB/verbose" și urmăriți toate nerezolvate în ieșirea din pasul anterior și adăugați librăriile de la 1 la 1.
  3. Acest lucru a dus la dublarea: "AAA.lib: XXX deja definit în BBB.lib"
  4. Apoi am reușit în sfârșit: Recompilați unitățile gestionate ȘI nesupravegheate cu/MD și link către (printre altele): mscoree.lib msvcmrt.lib mfcm80d.lib

Amestecarea/MT (neangajată) și/MD (reușită) sa dovedit a fi ideea proastă: sunt necesare diferite biblioteci (suprapuse).

@ajryan: Dependacy Walker îmi spune doar ce dll-uri sunt folosite, nu cele la care sunt legate bibliotecile atunci când se leagă. (de exemplu, msvcmrt.lib?) Cred.

Vă mulțumim pentru răspunsurile!

Jan

0
adăugat

Ca minim minim:

mscoree.lib MSVCRT.lib mfc90.lib (ajustați în mod corespunzător versiunea)

Și repetați de acolo.

0
adăugat