• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Windows下C语言调用dll动态链接库

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

dll是windows下的动态链接库文件,下面记录一下在windows下如何调用C语言开发的dll动态链接库。

1.dll动态链接库的源代码

hello_dll.c

#include "stdio.h"

_declspec(dllexport) void test_print(char const *str)
{
    printf("%s\n", str);
}

_declspec(dllexport) int test_add(int a, int b)
{
    return a + b;
}

上面的代码定义了两个函数,第一个函数需要传入一个字符串,然后打印出这个字符串,第二个函数需要转入两个int型整数,然后返回这两个整数的和。

执行 cl -LD hello_dll.c 会生成hello_dll.dll文件

 

2.main函数的源代码

test_hello_dll.c

#include <stdlib.h>
#include <windows.h>

int main(int argc, char const *argv[])
{
    // define two functional pointer
    void(*p_test_print)(char const *) = NULL;
    int(*p_test_add)(int, int) = NULL;

    int add_result;

    // load dll file, require window.h file
    HMODULE module = LoadLibraryA("hello_dll.dll");
    if (module == NULL) {
        system("error load");
    }
    p_test_print = (void(*)(char const *))GetProcAddress(module, "test_print");
    p_test_add = (int(*)(int, int))GetProcAddress(module, "test_add");
    if (p_test_print != NULL) {
        p_test_print("Hello This is from dll");
    } else {
        system("function p_test_print can not excute");
    }
    if (p_test_add != NULL) {
        add_result = p_test_add(5, 5);
        printf("Add result is %d\n", add_result);
    } else {
        system("function p_test_print can not excute");
    }
    FreeLibrary(module);
    system("pause");
    return 0;
}

执行 cl test_hello_dll.c 会生成test_hello_dll.exe的可执行文件。

运行该文件,可以成功调用dll文件中定义的函数。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
linux下c语言编程:文件操作发布时间:2022-07-13
下一篇:
c语言中的read和write函数发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap