在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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文件中定义的函数。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论