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

365bet篮球规则 📅 2025-07-04 17:02:58 ✍️ admin 👁️ 3026 ❤️ 10
Windows下C语言调用dll动态链接库

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

#include

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 {

printf("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 {

printf("function p_test_print can not excute");

}

FreeLibrary(module);

system("pause");

return 0;

}

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

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

相关创意

侠盗猎车手:罪恶都市
世界杯中国女乒3-0横扫日本 获得女团九连冠
给你花苹果版官方app下载app下载
信用卡csc什么意思(解析信用卡背面后三码的重要性)
魂斗罗系列
看图猜成语app哪个好玩?8款好玩的猜成语app推荐
世纪和年代是怎样划分的,怎么计算?
给你花苹果版官方app下载app下载
寒性食物:食品特點,區分,常見食物,分類,