Динамическое подключение сишных dll в приложении c#
Формулировка задачи:
Здравствуйте коллеги. Столкнулся вот с какой проблемой:есть у меня приложение .net, в котором я подключаю стороннюю dll написанную на си; все бы ничего да вот только этих dll два (один для 32разрядной системы, а второй для 64) и в зависимости от того, какая ОС я должен подключать соответствующую. Особенность кода .net не позволяет юзать методы из указанных импортов функций этих dll, т.к. методов там много и вызывать соответствующий проверяя в каждом вызове разрядность ОС крайне печально. Хотелось бы сделать что то типа условной типизации экземпляра объекта из двух разных классов для этих двух dll. Т.е. Выглядело бы это следующим образом: при запуске приложение определяет разрядность ОС (дабы в .net это сделать легко) далее исходя из условия создаю экземпляр необходимого класса с методами от подходящей для данной ОС dll, после чего уже юзаю методы из этого класса по мере необходимости.
Что посоветуете?
Решение задачи: «Динамическое подключение сишных dll в приложении c#»
textual
Листинг программы
public interface IMyDllWrapper { int Function(); }; public class MyDllWrapper32 : IMyDllWrapper { [DllImport("Dll_x86.dll", EntryPoint = "Function_x86")] static extern int Function_x86(); public int Function() { return Function_x86(); } } public class MyDllWrapper64 : IMyDllWrapper { [DllImport("Dll_x64.dll", EntryPoint = "Function_x64")] static extern int Function_x64(); public int Function() { return Function_x64(); } } public static class MyDllWrapper { public static IMyDllWrapper CreateDllWrapper() { if (IntPtr.Size == 8) return new MyDllWrapper64(); return new MyDllWrapper32(); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д