#c# #c #dll #runtime #badimageformatexception
#c# #c #dll #время выполнения #исключение badimageformatexception
Вопрос:
У меня есть две библиотеки DLL C WinAPI (только x64 arch) с одинаковыми именами, которые содержат API некоторого проекта, например C:firstMyDll.dll и C:secondMyDll.dll . Я не могу переименовать его в моем случае. Таким образом, они не могут быть загружены в диспетчер ссылок, потому что у них одинаковые имена.
DLLImport
могу загрузить только метод, но мне нужно загрузить некоторые интерфейсы COM, идентификаторы guid и т. Д
Какие у вас есть идеи?
Заранее всем спасибо
Комментарии:
1. создайте два проекта класса и поместите по одному в каждый класс.
2. Не уверен, что правильный способ сделать то, что вы хотите, но
Assembly.Load*
методы (и сам тип сборки) предназначены для загрузки управляемых сборок. Вы хотите загрузить сборку natove. Может быть, что-то в System.Runtime или System.Runtime. Пространства имен InteropServices могут помочь.3. Кроме того, вы можете создать другую неуправляемую библиотеку dll и использовать ее для загрузки нужной библиотеки dll… Или, может быть, использовать неуправляемый / собственный материал в проекте C / CLI для их загрузки.
4. Как указывает @paramecium, с помощью можно загружать только управляемые сборки (т. Е. Те, У которых есть манифест сборки)
Assembly.Load*
. Как правило, если вы хотите вызвать неуправляемый код, вы либо используете COM Interop, либо P / Invoke (вызываете экспортированные функции C). Что вы пытаетесь вызвать и как?5. P / Invoke экспортирует только методы, мне нужны все данные из dll (интерфейсы, uuid и т. Д.) О COM Interop будет читать