Ошибки компоновщика между несколькими проектами в Visual C++

Хорошо, я обнаружил проблему:

Я только что добавил «СЕТЬ СЕТИ» в certmgr -> Все задачи -> Управление закрытыми ключами в списке пользователей.

В частности, моя проблема заключалась в том, что в моем первоначальном подходе перед этой публикацией я тоже попробовал это, но почему-то Windows все еще хотела, чтобы я напечатал этого пользователя на немецком языке, учитывая, что я недавно перешел с немецкой на английскую ОС. Так что, по-видимому, это была просто проблема, касающаяся правильного именования здесь.

11
задан rlbond 3 March 2009 в 00:13
поделиться

5 ответов

Не зная никакую другую деталь о Вашем решении трудно сказать, однако Восстановить Все, могло бы быть полезным. Эта ситуация может иногда происходить, когда существуют файлы смешанного объекта для различной архитектуры.

Вы могли бы также хотеть рассмотреть использование "Ссылок" вместо "Зависимостей"

Править:

После того, что Вы отправили, кажется, что Ваша связь со стандартными библиотеками непоследовательна. Могло случиться так, что один из проекта связывает стандартные библиотеки статически в то время как другие динамично? (См. свойства проекта-> компоновщик), Или один ко времени выполнения выпуска, в то время как другие для отладки? (хотя последний должен быть возможным с протестами),

11
ответ дан 3 December 2019 в 02:11
поделиться

Трудно ответить, не зная все подробности о Вашем решении, но я предположу, что Ваш "другой" проект настраивается для создания .lib файла, и основной проект затем связывает все эти библиотечные файлы. Если это так, затем возможная причина для ошибок, которые Вы получаете, состоит в том, что Ваши проекты связываются с различными версиями библиотеки времени выполнения.

Из документации Microsoft, "Все модули передали данному вызову компоновщика, должно быть, был скомпилирован с тем же параметром компилятора библиотеки времени выполнения (/MD, / MT, / LD)".

Попытайтесь изменить все проекты использовать ту же версию библиотеки времени выполнения. В Visual Studio 2010 это находится в Свойствах Проекта | Свойства Конфигурации | C/C++ | Генерация кода | Библиотека времени выполнения. Выберите Multi-threaded Debug DLL или Multi-threaded Debug (для Вашей настройки отладочного процесса).

20
ответ дан 3 December 2019 в 02:11
поделиться

Функции в Ваших других проектах экспортированы? Если они не экспортируются, то нет ничего для соединения с от основного exe, так, чтобы вызвал бы ошибки. Посмотрите Экспорт из DLL Используя __ declspec (экспорт) для получения дополнительной информации.

2
ответ дан 3 December 2019 в 02:11
поделиться

Я предполагаю ошибки компоновщика, которые Вы получаете, для "неразрешенных символов"?

При пользовании статическими библиотеками (т.е. .lib файл), необходимо будет добавить библиотеку к входу компоновщика, так, чтобы во время связи символы могли быть связаны против. Если Вы не сделаете этого, то Вы получите неразрешенный символ:

  1. Щелкните правой кнопкой по проекту и выберите Свойства.
  2. Выберите Свойства Конфигурации-> Компоновщик-> Вход
  3. Введите имя библиотеки (например, filename.lib) под Дополнительными Зависимостями.
0
ответ дан 3 December 2019 в 02:11
поделиться

Ошибки, которые вы получаете, являются 'error LNK2005', когда символ в библиотеке, которую вы связываете (msvcprtd.lib), уже определен в другой библиотеке (например, panels.lib). Если вы добавите panels.lib в поле 'ignore specific library' (в VS2008 Configuration Properties--> Linker--> Input -->Ignore specific libraries), ошибки прекратятся.

1
ответ дан 3 December 2019 в 02:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: