Приложение C # не может найти Dll при компиляции с флагом / MDd - PullRequest
0 голосов
/ 02 сентября 2010

У меня есть приложение на C #, которое ссылается на несколько библиотек DLL c #, которые, в свою очередь, используют привязки для вызова функций c ++ в других библиотеках.

Все это прекрасно работает, если я компилирую DLL-библиотеки c ++ с / MTd, но когда яuse / MDd Я получаю исключение XMLParseException в своем приложении C #, жалуясь на то, что оно не может найти какие-либо Dlls (ему не удается найти первый из моих Dll, который я использую).Мое лучшее предположение состоит в том, что использование этого другого переключателя заставляет его изменить путь, по которому он ищет свои DLL, вызывая его сбой.Я использовал DependencyWalker для более детального изучения, и два Dll, которые он фактически не может найти, это «IESHIMS.DLL» и «WER.DLL».Однако я не вижу своих C # Dll в дереве в DependecyWalker.У кого-нибудь есть идеи, что здесь может быть не так?

Кроме того, использование неотладочных эквивалентов (/ MD и / MT) не имеет значения.Несмотря на это, я не могу использовать / MT, так как это вызывает другую ошибку.

РЕДАКТИРОВАТЬ: Я несколько сузил проблему.Когда мое приложение скомпилировано и связано с использованием командной строки VS2010, оно работает нормально, с командной строкой VS2008 оно все равно не может найти Dll.Кто-нибудь знает какие-либо различия между этими двумя версиями VS, которые могут вызвать поведение, которое я описал выше?

Заранее спасибо,

1 Ответ

0 голосов
/ 02 сентября 2010

Собираете ли вы все модули для одной и той же библиотеки времени выполнения?From: http://msdn.microsoft.com/en-us/library/2kzt1wy3(VS.80).aspx

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

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