2010-02-05 12 views
0

Je développe un projet qui utilise des DLL et des bibliothèques tierces. Je veux construire mon projet en utilisant CRT statique (LIBCMTD) comme je souhaite exécuter mon application dans "IBM purifier". Cependant, les bibliothèques tierces sont construites en utilisant CRT dynamique (MSVCRT).Conflit StaticCRT (LIBCMT (D)) et DynamicCRT (MSVCRT (D))

Cela donne une erreur comme liant: MSVCRTD.lib (msvcr80d.dll): LNK2005 d'erreur: __mktime64 déjà défini dans LIBCMTD.lib (mktime64.obj) MSVCRTD.lib (msvcr80d.dll): erreur LNK2005: __gmtime64 déjà défini dans LIBCMTD.lib (gmtime64.obj) MSVCRTD.lib (MSVCR80D.dll): erreur LNK2005: __localtime64 déjà défini dans LIBCMTD.lib (loctim64.obj)

J'ai essayé divers paramètres de lieur. J'ai aussi donné/FORCE: MULTIPLE à la ligne de commande de l'éditeur de liens pour ignorer les multiples définitions et créer une construction. Il l'a fait, mais mon application ne pouvait pas fonctionner en purificateur.

Existe-t-il un bon moyen de faire ce que j'essaie d'accomplir? Je n'ai aucun contrôle sur le code source tiers pour contrôler leurs paramètres.

Merci

Répondre

1

Si elle doit être construite en utilisant uniquement la bibliothèque statique, vous êtes probablement arrosés - leur DLL est déjà configuré pour créer un lien vers la bibliothèque standard de façon dynamique, et rien ne vous dans la construction du reste de le projet va changer cela (à moins que vous ne puissiez obtenir que le fournisseur fournisse une version qui lie statiquement à la bibliothèque standard).