У меня есть несколько написанных на неуправляемом C++ файлов lib, которые мне нужно связать с dll управляемого C++.
Затем мне нужно вызвать функции этого управляемого C++ из приложения C#.
Первый шаг в порядке - создается управляемая C++ dll, я вижу с помощью ildasm, что она экспортирует нужные мне функции. Однако, когда я пытаюсь вызвать эту функцию из моего тестового приложения, написанного на С#, он говорит:
Произошло необработанное исключение типа «System.IO.FileLoadException» в неизвестном модуле.
Не удалось загрузить процедуру, импортированную с помощью {MyManagedCPP.dll}.
Это сообщение исходит из VS2010.
Я провел простой эксперимент - удалил зависимости из всех файлов lib в Managed C++ dll и пересобрал его.
С этим изменением все в порядке - приложение запускается, я могу вызывать функции Managed C++ dll из Тестовое приложение С#.
Разве нельзя по дизайну вызывать управляемые функции С++, когда dll имеет статическую связь с файлами lib? Техническое ограничение? Или есть обходной путь?
Спасибо
DllImport["my.dll']
. Будьте осторожны с тем, куда вы помещаете свои DLL (они должны находиться в рабочем каталоге, определенном вашим проектом, не обязательно рядом с exe. - person axon   schedule 23.05.2013