2008-08-13 3 views
1

Ich integriere .NET-Unterstützung in unsere C++ - Anwendung.
Es ist eine Old-School-MFC-Anwendung, mit 1 zusätzlichen Datei kompiliert mit der "/ clr" -Option, die ein CWinFormsControl verweist.Welche Bibliotheken benötige ich, um meine Mixed-Mode-Anwendung zu verknüpfen?

Ich bin nicht berechtigt, das Linker-Flag "/ NODEFAULTLIB" zu entfernen.
(Wir haben unser eigenes Build-Management-System, nicht Visual Studio.)
Dies bedeutet, dass ich alle erforderlichen Bibliotheken angeben muss: VC Runtime und MFC.

Andere Compiler-Optionen umfassen "/ MD"

Darüber hinaus: Ich kann nicht den Linker-Flag verwenden können "/ FORCE: MULTIPLE" und fügen Sie einfach alles:
Ich suche nach einem nicht -überschneidender Satz von Bibliotheken.

Antwort

1

Wie ich es gelöst:

  1. Verbindung mit "/ FORCE: MULTIPLE/verbose" (das ok Links) und die Ausgabe beiseite stellen.
  2. Verknüpfung mit "/ NODEFAULTIB/verbose" und verfolgen Sie alle nicht aufgelösten in der Ausgabe des vorherigen Schritts und fügen Sie die Bibliotheken 1 durch 1.
  3. Dies führte zu Doppel: "AAA.lib: XXX bereits in BBB.lib definiert "
  4. Dann habe ich es endlich: neu kompiliert verwaltete und nicht verwaltete Geräte mit/MD und Link zu (unter anderem): mscoree.lib msvcmrt.lib mfcm80d.lib

Mischen/MT (unmanaged) und/MD (verwaltet) erwies sich als die schlechte Idee: verschiedene (überlappende) Bibliotheken werden benötigt.

@ajryan: Dependcy Walker sagt mir nur, welche DLLs verwendet werden, nicht, was Bibliotheken bei der Verknüpfung verknüpft sind. (z.B. msvcmrt.lib?) Ich denke.

Danke für die Antworten!

Jan

1

als absolutes Minimum:

mscoree.lib MSVCRT.lib mfc90.lib (justieren Version passend)

Und von dort laufen.

1

Verwenden Sie den Anwendungs-Assistenten, um eine leere MFC-App in Ihrem Stil (SDI/MDI/Dialogfeld) und dann put on your depends zu erstellen.

Verwandte Themen