Я делюсь статической библиотекой с клиентом. он использует vs2008 sp 1.
Я использую стороннюю библиотеку, которую я построил с помощью mfc с общей версией выпуска dll и / MD
Затем я построил свою собственную статическую библиотеку, которая включает эту стороннюю библиотеку с MFC с опцией общей dll и версией выпуска / MD.
Я создал тестовую dll, чтобы просто убедиться, что она работает. без проблем работает нормально. Я вообще не использую MFC. только клиент, поэтому мне сказали использовать MFC с общими dll и / MD.
теперь они жалуются, что получают
xyz уже определен в ошибках msvcrt.lib (MSVCR90.dll). Я думаю, это похоже на ошибки LNK2005.
они заявляют следующее:
«Конкретно связывание не удается из-за того, что« моя библиотека »статически связывается со многими библиотеками, общими с более крупной производственной цепочкой инструментов. Эти общие библиотечные функции экспортируются« моей библиотекой », вызывая конфликты связывания.
кроме того, они заявляют:
«Чтобы решить эту проблему,« моя библиотека »может предоставлять только функции, связанные с одним API (из моей статической библиотеки), чтобы гарантировать отсутствие результата конфликтов связывания. Экспортируемыми функциями можно управлять, когда« моя библиотека » построен с использованием комбинации параметров компоновщика и операторов определения модуля (файл .def) "
Я не уверен, что могло вызвать эту проблему. это не проблема с моей стороны, но есть. Я думаю, может быть, у них проблемы с использованием неправильных параметров или неправильной версии 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 я использую в своей статической библиотеке в vs2008. Я использовал / verbose, чтобы увидеть это, но это не работает. и я знаю, что dumpbin или dependency walker не будут вырезать его для статической библиотеки.
Боролся с этим в течение нескольких дней и исследовал как сумасшедшие. нет ответов о том, почему у них могут быть проблемы с msvcrt.lib (MSVCR90.dll).