Как загрузить библиотеки DLL C с тем же именем в проект C #

#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 будет читать