MSVC - C ++ - сбой сборки выпуска - ошибка компоновщика - PullRequest
2 голосов
/ 30 марта 2011

HI,

Если я пытаюсь собрать и связать мое приложение в режиме Release, я получил ошибку компоновщика:

Ошибка 72, ошибка LNK2001: неразрешенный внешний символ "public:__thiscall MyModels :: MT6 :: MT6 (double) "(?? 0MT6 @ MyModels @@ QAE @ N @ Z) C: \ Martin \ Programming \ WoknaTest \ WoknaTest \ DXForm.obj WoknaTest

В режиме отладки все работает нормально .... что может быть не так?

Спасибо

Ответы [ 4 ]

5 голосов
/ 30 марта 2011

Судя по тому, что он успешно собирается в конфигурации отладки, первым моим предложением было бы проверить дополнительные зависимости, предоставленные компоновщику. Эта настройка будет Additional Dependencies настройка в Project -> Properties -> Configuration Properties -> Linker -> Input. Убедитесь, что этот параметр соответствует тому, что находится в конфигурации отладки, при условии, что нет имен библиотек, специфичных для отладочной сборки.

3 голосов
/ 30 марта 2011

Я бы проверил в настройках проекта, что все .lib-файлы и библиотеки включены в режимы выпуска и отладки.

Решение этого, вероятно, заключается в настройках проекта для ссылки куда-либо (либо.lib .dll или путь включает в себя), но я не могу точно сказать, откуда именно информация.Вы предоставили.

2 голосов
/ 30 марта 2011

Скорее всего, версия (при условии, что вы не редактировали параметры проекта вручную) состоит в том, что в вашем коде есть какая-то библиотека, на которую ссылается ваш код, и у вас нет версии выпуска вашей библиотеки. Обычно компоновщик ссылается на библиотеки с суффиксом «d» для отладки и без него для выпуска.

Например: у вас есть проект VectorMath в вашем решении. Проект по умолчанию создает библиотеку vectormathd.lib в конфигурации отладки и vectormath.lib в выпуске. Если ваши зависимости испорчены, и вы никогда не создавали релизную версию vectormath, вы создадите свой основной проект в релизе, и он будет искать vectormath.lib, которого у вас не будет - отсюда и неразрешенный внешний символ. Решением было бы убедиться, что все проекты построены в режиме выпуска, или исправить зависимости, чтобы VS сделал это за вас.

0 голосов
/ 18 декабря 2018

Для меня это всегда 2 решения:

  1. Свойства проекта> Свойства конфигурации> Линкер> Общие, Зависимости библиотеки ссылок = Да
  2. Свойства проекта> Свойства конфигурации> Линкер> Ввод, Дополнительные зависимости, Правка. Установите флажок «Наследовать от родительских или проектных значений по умолчанию»
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...