Загрузка библиотеки Dynami c и использование функций внутри библиотеки. - PullRequest
0 голосов
/ 17 февраля 2020

В C# я использую внешнюю dll, используя loadLibrary, например:

public class Utilities
    [DllImport("kernel32", CharSet= CharSet.Auto, SetLastError=true)]
    private static extern IntPtr LoadLibrary(string librayName);
    [DllImport("kernel32", CharSet= CharSet.Auto, SetLastError=true)]
    private static extern IntPtr GetProcAddress(intPtr hwnd, string procedureName);

    public static LoadAssembliesAndMethods() {
        string mainPath = AppDomain.CurrentDomain.BaseDirectory;
        string path = Path.Combine(mainPath, "MyAssembly.dll");

        IntPtr ptr = LoadLibrary(path);

        // What to do next in order to get all the list of functions/methods/class in the library and use them?

    }

У dll нет подписи Assembly (это сторонняя версия), поэтому я не могу сделать

Assebly.LoadFile(path);

Мне нужно получить все функции / методы / класс библиотеки DLL и использовать некоторые из них, используя C#.

Как я могу это сделать.

Ответы [ 2 ]

1 голос
/ 17 февраля 2020

Если вы хотите перечислить все методы внутри неуправляемой dll, эта ссылка поможет вам:

C# получить список неуправляемых C dll export

Обновление:

IntPtr funcaddr = GetProcAddress(Handle,functionName);
YourFunctionDelegate function = 
Marshal.GetDelegateForFunctionPointer(funcaddr,typeof(YourFunctionDelegate )) 
as YourFunctionDelegate ;
function.Invoke(pass here your parameters);

, вам необходимо создавать делегаты при кодировании или использовать DynamicModules для создания делегатов во время выполнения

0 голосов
/ 17 февраля 2020

Нет общего способа программно получить список экспорта неуправляемой библиотеки.

См. Есть ли способ найти все функции, предоставляемые DLL , для получения дополнительной информации

...