Question

J'intègre le support .NET dans notre application C++.
Il s'agit d'une application MFC à l'ancienne, avec 1 fichier supplémentaire compilé avec l'option "/clr" qui fait référence à un CWinFormsControl.

Je ne suis pas autorisé à supprimer l'indicateur de l'éditeur de liens "/NODEFAULTLIB".
(Nous avons notre propre système de gestion de build, pas celui de Visual Studio.)
Cela signifie que je dois spécifier toutes les bibliothèques nécessaires :Exécution VC et MFC.

Les autres options du compilateur incluent "/MD"

À côté de cela:Je ne peux pas utiliser l'indicateur de l'éditeur de liens "/FORCE:MULTIPLE" et simplement ajouter tout:
Je recherche un ensemble de bibliothèques qui ne se chevauchent pas.

Était-ce utile?

La solution 3

Comment je l'ai résolu :

  1. lien avec "/FORCE:MULTIPLE /verbose" (qui lie ok) et mettez la sortie de côté.
  2. liez avec "/NODEFAULTIB /verbose" et tracez tous les problèmes non résolus dans la sortie de l'étape précédente et ajoutez les bibliothèques 1 par 1.
  3. Cela a abouti à des doubles :"AAA.lib :XXX déjà défini dans BBB.lib"
  4. Et puis j'ai finalement compris :Unités gérées ET non gérées recompilées avec /MD et lien vers (entre autres) :mscoree.lib msvcmrt.lib mfcm80d.lib

Mélanger /MT (non géré) et /MD (géré) s'est avéré être une mauvaise idée :différentes bibliothèques (qui se chevauchent) sont nécessaires.

@ajryan :Dependcy Walker me dit uniquement quelles DLL sont utilisées, pas à quelles bibliothèques sont liées lors de la liaison.(par exemple.msvcmrt.lib ?) Je pense.

Merci pour les réponses!

Jan

Autres conseils

Au strict minimum :

mscoree.lib MSVCRT.lib mfc90.lib (ajustez la version en conséquence)

Et itérez à partir de là.

Utilisez AppWizard pour créer une application MFC simple dans votre style (SDI / MDI / dialog), puis mets tes dépendances.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top