以下是一个使用易语言动态调用DLL的示例,包含定义DLL函数、加载DLL、获取函数指针、调用函数和释放DLL等步骤。

定义DLL函数:

Func1(int a, int b) -> int
Func2(int a, int b) -> int

动态调用DLL并调用其中的函数:

// 加载dll
HMODULE hDll = LoadLibrary('mydll.dll');

if (hDll != NULL) {
    // 获取函数指针
    FARPROC lpFunc1 = GetProcAddress(hDll, 'Func1');
    FARPROC lpFunc2 = GetProcAddress(hDll, 'Func2');

    if (lpFunc1 != NULL && lpFunc2 != NULL) {
        // 调用函数
        int result1 = ((int (*)(int, int))lpFunc1)(1, 2);
        int result2 = ((int (*)(int, int))lpFunc2)(3, 4);

        // 输出结果
        Print('Func1 result:', result1);
        Print('Func2 result:', result2);
    }

    // 释放dll
    FreeLibrary(hDll);
}

代码解析:

  1. 定义DLL函数: 首先需要在DLL中定义要调用的函数,包括函数名、参数类型和返回值类型。
  2. 加载DLL: 使用 LoadLibrary 函数加载DLL文件,并获取DLL模块句柄。
  3. 获取函数指针: 使用 GetProcAddress 函数根据函数名获取函数指针,该指针指向DLL中对应函数的地址。
  4. 调用函数: 通过函数指针调用DLL中的函数,并将参数传递给函数。
  5. 释放DLL: 使用 FreeLibrary 函数释放DLL模块句柄。

注意:

  • DLL文件需要放置在可执行文件相同的目录下,或者在系统环境变量中配置DLL路径。
  • 使用 FARPROC 类型存储函数指针,并使用类型转换将函数指针转换为函数调用形式。
  • 确保DLL中定义的函数名称与代码中调用的函数名称一致。
  • 在调用完DLL函数后,记得释放DLL模块句柄。

原文地址: https://www.cveoy.top/t/topic/mBu8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录