Я пытаюсь разработать очень сложный проект с открытым исходным кодом с VC ++. Проект состоит из десятков библиотек и одного исполняемого файла в зависимости от тех библиотек.
По некоторым причинам VC ++ компоновщик не хочет заниматься 40 функциями, реализованными в одной из тех библиотек и отчетов "неразрешенная внешняя ссылка" на каждом, таким образом, я не могу связаться. Я не хочу напрасно тратить время, разрешая проблему - те функции, вероятно, никогда не вызываются.
Я хотел бы просто попросить, чтобы компоновщик связал то, что это видит, и вставьте некоторую разумную обработку ошибок (как создание отчетов об ошибке и завершение программы) вместо того, чтобы пропустить функции. Как я могу сделать это?
Вы можете использовать опцию компоновщика / FORCE: UNRESOLVED
.
Документация по этому поводу содержит довольно заниженное предупреждение:
Файл, созданный с этой опцией, может не работать должным образом.
На практике обработки ошибок не будет - только сбой.
Есть некоторые заметные исключения, но большинство проектов OpenSource не предназначены для создания в VisualStudio.
Обычно для порта Windows лучше использовать систему cygwin или mingw . Мой совет обычно касается mingw, если только программа не использует много вызовов Unix OSey, таких как каналы и сигналы.
Если функции действительно никогда не вызываются, тогда создайте для библиотек фактические библиотеки (файлы .lib). Тогда компоновщик будет извлекать из библиотек только то, что нужно.
Задача компоновщика - разрешить все ссылки, поэтому я не думаю, что вы заставите его вставлять код обработки ошибок.
P.S. Первое, что я проверю, - это посмотреть, были ли функции C скомпилированы как C ++, что привело к отсутствию символов.
Если они никогда не вызываются, удалите ссылки из вашего проекта. Если они позвонят, то исправьте чертову проблему. Другого варианта здесь нет.