使用g++编译器进行dll动态链接库的创建及调用

本文详细介绍了如何使用C++创建一个DLL项目,包括编写源代码、编译动态链接库,以及在C语言程序中导入并调用DLL中的函数。通过实例展示了DLL的加载、函数获取和调用过程。
摘要由CSDN通过智能技术生成

1、创建DLL项目

首先,我们需要一个C++源文件来创建DLL。假设我们的DLL将提供一个简单的函数addNumbers,该函数接受两个整数并返回它们的和。如:新建dllmain.cpp。

#include <windows.h>  
  
extern "C" __declspec(dllexport) int addNumbers(int a, int b) {  
    return a + b;  
}  
  
BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved) {  
    switch (ul_reason_for_call) {  
        case DLL_PROCESS_ATTACH:  
        case DLL_THREAD_ATTACH:  
        case DLL_THREAD_DETACH:  
        case DLL_PROCESS_DETACH:  
            break;  
    }  
    return TRUE;  
}

2、编译DLL

在终端下,输入:

g++ -shared -o mylib.dll dllmain.cpp

其中,-shared指生成动态链接库,-o指生成的.dll文件名,后接源文件。

便可得到mylib.dll的动态链接库,为后续调用。

3、 编写.c程序对DLL进行调用

#include <stdio.h>  
#include <windows.h>  
  
// 声明DLL中导出的函数  
typedef int (*AddNumbersFunc)(int, int);  
  
int main() {  
    // 加载DLL  
    HINSTANCE hDLL = LoadLibrary(TEXT("mylib.dll"));  
    if (hDLL == NULL) {  
        printf("Failed to load DLL.\n");  
        return 1;  
    }  
  
    // 获取函数的地址  
    AddNumbersFunc addNumbers = (AddNumbersFunc)GetProcAddress(hDLL, "addNumbers");  
    if (addNumbers == NULL) {  
        printf("Failed to get function address.\n");  
        FreeLibrary(hDLL);  
        return 1;  
    }  
  
    // 调用函数  
    int result = addNumbers(2, 3);  
    printf("The result is: %d\n", result);  
  
    // 卸载DLL  
    FreeLibrary(hDLL);  
  
    return 0;  
}

4、 编译C语言程序

g++ -o myprogram main.c -L"E:\DLL_Test\" -lmylib

其中,-L后接dll文件所在路径,-l后接自定义.dll动态链接库名。

最后,可得到。

5、 运行程序

.\myprogram

在终端看到如下说明,即表示调用成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值