Мне нужно использовать мой собственный неуправляемый C ++ dll в проекте Silverlight 5.
Как я могу использовать его, используя dllImport, т.е.
[DllImport(@"D:\myLib\Debug\myLib.dll")]
static extern int add(IntPtr ptr);
Это прекрасно работает, так как я обозначил абсолютный путь в DllImport. Но моя проблема в том, что я хочу использовать относительный путь.
Так как мне нужно добавить неуправляемую C ++ dll в мой проект silverlight 5 и указать путь оттуда.
Я расследую последние два дня, я не нашел никакого решения для этой проблемы.
Только я нашел одну ссылку, упомянутую ниже, но это также не помогает.
Как это предложить, как встроить вашу неуправляемую DLL в управляемую сборку.
Я попробовал этот подход, но я получаю «BadImageException».
Пожалуйста, предложите более подробно остановиться на этом вопросе, так как он действительно актуален для меня.
Спасибо,
Vipin
Когда Silverlight 5 Release Candidate был обнародован, я создал несколько методов поддержки для решения этой проблемы объединения неуправляемых несистемных DLL-файлов с вашим приложением Silverlight 5 RC. Решение остается в силе, поскольку Microsoft не добавила никакой поддержки для решения проблемы комплектации в Silverlight 5 RTM.
То, что я делаю, — это, в основном, связываю неуправляемую DLL в качестве файла ресурсов. Через вспомогательный метод, вызываемый вручную, например, в обработчике события запуска приложения ресурс копируется в предопределенное место на диске. Это местоположение затем также включается в системный PATH во время выполнения.
Требуется повышенное доверие (конечно).
Более подробную информацию об этом решении можно найти в этот Сообщение блога.
Весь код, связанный с этим решением, включая примеры тестов, можно найти на Github.
ОБНОВИТЬ
Как указано в последующем комментарии Саймона Мурье, одним из вариантов также может быть загрузка в память (и освобождение при выходе из приложения) неуправляемой DLL путем вызова Kernel32 LoadLibrary функция после того, как DLL была распакована из ресурсов. Этот подход для Silverlight более подробно описан в этот Сообщение блога.
Других решений пока нет …