Как использовать CLR в разных средах выполнения под несколькими проектами в visualstudio? - PullRequest
0 голосов
/ 05 июня 2009

Вот мой сценарий.

У меня есть существующее решение в visualstudio, которое содержит 15 проектов.

В некоторых проектах мне нужно использовать управляемые расширения C ++. Итак, сначала у меня есть обходной путь для примера решения, содержащего 4 проекта в тех, которые я поддерживал зависимости ч / б их.

и моё решение тоже построено.

Я применяю ту же процедуру к существующему решению, добавляя дополнительный проект, который содержит управляемый код. Поэтому я включаю CLR в вызывающем проекте (откуда я вызываю новые добавленные методы проекта из существующих ex: demoproj ), а также проект, который содержит main (). и изменить время выполнения с / mtd (существующий содержит / mtd) на / mdd.

когда я строю demoproj , он полностью строит успех. Но когда я строю проект, который содержит main (), он выдает много ошибок, таких как

LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library

LIBCMTD.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in MSVCRTD.lib(MSVCR80D.dll)

LIBCMTD.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in MSVCRTD.lib(MSVCR80D.dll)

LIBCMTD.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in MSVCRTD.lib(MSVCR80D.dll)

LIBCMTD.lib(crt0.obj) : error LNK2005: _mainCRTStartup already defined in MSVCRTD.lib(crtexe.obj)

LIBCMTD.lib(fclose.obj) : error LNK2005: _fclose already defined in MSVCRTD.lib(MSVCR80D.dll)

LIBCMTD.lib(printf.obj) : error LNK2005: _printf already defined in MSVCRTD.lib(MSVCR80D.dll)

LIBCMTD.lib(mbstowcs.obj) : error LNK2005: _mbstowcs already defined in MSVCRTD.lib(MSVCR80D.dll)


Я обнаружил, что это произошло из-за использования параметра / clr, я думаю, что любая идея ???

Но этот случай не является случаем для моего тестового решения. Как решить эту проблему

Любая помощь с благодарностью

1 Ответ

1 голос
/ 05 июня 2009

Все библиотеки DLL, на которые вы ссылаетесь с помощью библиотек импорта, должны иметь те же настройки, что и приложение для связи с библиотекой времени выполнения. Ошибки показывают, что вы смешиваете использование среды выполнения как .dll (MSVCRTD) и как .lib (LIBCMTD).

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