Проблемы с компоновщиком LNK 2005 с msvcrt.lib (MSVCR90.dll)

Я делюсь статической библиотекой с клиентом.
он использует vs2008 sp 1.

я использую стороннюю библиотеку, которую я собрал с помощью mfc с разделяемой версией dll и / MD

Затем я создал свою собственную статическую библиотеку, которая включает в себя эту стороннюю библиотеку с MFC с опцией shared dll и релизной версией / MD.

Я создал тестовую DLL, чтобы убедиться, что она работает. без проблем работает нормально.
Я не использую MFC вообще. только клиент — вот почему они сказали мне использовать MFC с общими dll и / MD.

теперь они жалуются, что они получают

xyz уже определен в ошибках msvcrt.lib (MSVCR90.dll). это похоже на ошибки LNK2005, я думаю.

они заявляют следующее:

«В частности, связывание не выполняется из-за того, что« моя библиотека »статически связывается со многими библиотеками, общими для более крупной сборки производственного инструментария. Эти общие функции библиотеки экспортируются« моей библиотекой », вызывая конфликты ссылок.

кроме того, они заявляют:

«Чтобы решить эту проблему,« моя библиотека »может выставлять только функции, связанные с одним API (из моей статической библиотеки), чтобы гарантировать отсутствие конфликтов ссылок. Экспортируемыми функциями можно управлять, когда« моя библиотека » построен с использованием комбинации параметров компоновщика и операторов определения модуля (.def file) «

Я не уверен, что может вызвать эту проблему. это не проблема с моей стороны, но есть.
Я думаю, может быть, у них возникают проблемы с использованием неправильных опций или неправильной версии CRT?

Кроме того, я не уверен, что могу выполнить их просьбу, возможно, не связываться с msvcrt.lib (MSVCR90.dll), так как моя статическая библиотека зависит от стандартных функций c и т. д.

я довольно потерян в данный момент, я исследовал пару ссылок
Как распространять библиотеки времени выполнения C (CRT)

а также

http://www.nuonsoft.com/blog/2008/10/29/binding-to-the-most-recent-visual-studio-libraries/

но если то, что указано в ссылке, проблема с CRT, то я не уверен, как выяснить, что CRT я использую мой статический lib в vs2008. Я использовал / подробный, чтобы увидеть его, но он не работает. и я знаю, что dumpbin или обходчик зависимостей не обрежут его для статической библиотеки.

Несколько дней боролся с этим и исследовал как сумасшедший. нет ответов на вопрос, почему у них могут быть проблемы с msvcrt.lib (MSVCR90.dll).

0

Решение

Получите имена конфликтующих библиотек из их сообщений об ошибках. Добавьте имена этих библиотек в настройки проекта вашей статической библиотеки (в настройках компоновщика, я верю). Должна быть строка «игнорировать библиотеки», здесь вы должны добавить имена библиотек. Убедитесь, что ваш проект компилируется и ваши тесты пройдены. Затем отправьте им свою вновь скомпилированную статическую библиотеку и посмотрите, есть ли у них конфликты. Если они это сделают, получите имена конфликтующих библиотек и повторите процесс.

это и подобные исправления описаны здесь: http://support.microsoft.com/kb/148652

Вы можете попытаться добавить поддержку MFC в свой проект, чтобы попытаться выявить конфликты локально в вашей среде разработки; Могу поспорить, что это приведет к тем же ошибкам, которые они получают. Это происходит, когда библиотеки времени выполнения C и библиотеки MFC выходят из строя.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]