Могу ли я попросить компоновщик VC ++ игнорировать неразрешенные внешние проблемы? - PullRequest
11 голосов
/ 24 февраля 2010

Я пытаюсь создать очень сложный проект с открытым исходным кодом на VC ++. Проект состоит из десятков библиотек и одного исполняемого файла в зависимости от этих библиотек.

По некоторым причинам компоновщик VC ++ не хочет видеть около 40 функций, реализованных в одной из этих библиотек, и сообщает о «неразрешенной внешней ссылке» на каждую, поэтому я не могу связать. Я не хочу тратить время на решение проблемы - эти функции, вероятно, никогда не будут вызываться.

Я хотел бы просто попросить компоновщика связать то, что он видит, и вставить разумную обработку ошибок (например, сообщение об ошибке и завершение программы) вместо отсутствующих функций. Как я могу это сделать?

Ответы [ 4 ]

13 голосов
/ 24 февраля 2010

Вы можете использовать опцию компоновщика /FORCE:UNRESOLVED.

Документация для этого содержит довольно заниженное предупреждение:

Файл, созданный с помощью этой опции, может не работает, как ожидалось.

На практике обработка ошибок не будет - только сбой.

6 голосов
/ 24 февраля 2010

Если функции действительно никогда не вызываются, то создайте для них реальные библиотеки (файлы .lib). Тогда компоновщик будет извлекать из библиотек только то, что нужно.

Работа компоновщика состоит в том, чтобы разрешить все ссылки, поэтому я не думаю, что вы получите его для вставки кода обработки ошибок.

P.S. Первым делом я проверю, скомпилированы ли функции C как C ++, что приводит к отсутствующим символам.

5 голосов
/ 24 февраля 2010

Если они никогда не вызывались, удалите ссылки из вашего проекта. Если они вызваны, то исправьте эту чертову проблему. Здесь нет другого варианта.

1 голос
/ 24 февраля 2010

Есть некоторые заметные исключения, но большинство проектов OpenSource не предназначены для сборки под VisualStudio.

Обычно для порта Windows лучше использовать систему cygwin или mingw . Мой совет обычно для mingw, если только программа не использует много вызовов Unix OSey, таких как каналы и сигналы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...