2010-07-14 4 views
-1

Quand je lien vers l'un sous presse /, a obtenu une erreur fatale:Quelle est la différence entre libs sous le répertoire Debug/et Release/en C?

LINK : fatal error LNK1146: no argument specified with option '/machine:' 

Alors j'ai essayé de créer un lien vers le .lib sous Debug/ et cette fois-ci fonctionne.

Mais qu'est-ce qui peut être différent?

+0

Cette erreur semble indiquer que quelque chose ne va pas avec la génération de ligne de commande pour l'éditeur de liens. A quoi ressemble la ligne de commande sous Paramètres du projet -> Propriétés de configuration -> Lieur -> Ligne de commande? (Pour le mode de libération). Sur le mien il y a une option comme '/ MACHINE: X86'. – Cogwheel

Répondre

2

Habituellement, aucune optimisation n'est effectuée pour déboguer les assemblages, alors que les assemblages de version sont optimisés. Les assemblages de débogage contiendront également souvent des numéros de ligne de fichier source comme ceux de la source.

+0

Mais pourquoi la construction échoue-t-elle avec les libérations? – ieplugin

+0

@ieplugin: L'erreur semble que vous avez fait une faute de frappe sur la ligne de commande, pas que la bibliothèque ait quelque chose à voir avec cela. –

0

Vous souhaiterez peut-être modifier la configuration de génération pour les versions de débogage et de publication séparément.

1

Ce n'est pas réellement une question C; cela concerne les plates-formes utilisées.

Souvent, un projet/solution sera configuré pour créer une version pour le débogage et un pour la publication, et les placer dans les répertoires Debug/et Release/est un moyen courant de distinguer. La version de débogage compilera généralement rapidement et fonctionnera lentement, et contiendra des informations pour lier l'exécution interne au code source (tels que les numéros de ligne et les noms de variables). La version finale est généralement plus lente à compiler et plus rapide à exécuter, et il est beaucoup plus difficile de suivre ce qui se passe à l'intérieur.

De toute évidence, il doit y avoir des différences entre les versions de débogage et de version, si seulement les indicateurs de compilation appropriés. Cependant, dans les systèmes de construction que je connais, il est possible de faire d'autres changements arbitraires, et parfois cela provoquera un bug de version seulement, ce qui est pénible. Alternativement, si le code C ne spécifie pas le comportement correctement, les versions de débogage et de publication peuvent l'interpréter différemment, et c'est aussi une douleur.

Dans ce cas, je suppose qu'il y avait une différence dans la façon dont ils ont été construits. Je ne peux pas vraiment commenter plus sans plus d'informations.

Qu'est-ce que le système d'exploitation? Quel est le compilateur C utilisé? Quel système de construction utilisez-vous (si vous utilisez un IDE, peut-être le standard avec l'IDE)? Quelle est la bibliothèque que vous utilisez? Est-ce que votre organisation le construit, ou l'obtenez-vous de l'extérieur? Sachant ces choses nous donnerait une idée de l'endroit où commencer à regarder.

Questions connexes