欢迎来到天天文库
浏览记录
ID:62033090
大小:121.00 KB
页数:3页
时间:2021-04-15
《codeblocks动态链接库的实现.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、codeblocks下c语言动态链接库的实现本文是基于windows下codeblocks,c语言编程环境下的一、动态链接库封装实例:打开codeblocks,file--—>new———>project-—->dynamiclinklibrary开始创建动态库。将新建工程中自动产生的cpp文件删除,新建c文件,动态库中的c文件写法与一般工程中的写法完全一样,只是头文件的函数声明不一样,下面给出我的例子:新建rtrydll。dll动态库工程,删除自动生成的main.cpp文件,自建trydll.c文件,代码如下:#
2、include<stdio.h>#include<string。h>#include"trydll。h”voidhello(){ printf("hello!\n"); printf("may you success!");}按照自动生成文件main.h文件的格式自建一个trydll.h头文件用以声明trydll.c中想要输出的函数,这里是voidhello()函数,代码如下:#ifndefTRYDLL_H_INCLUDED#defineTRYDLL_H_INCLUDED#include 〈windows.h
3、>/* Tousethis exportedfunctionof dll,includethisheader * inyourproject。*/#ifdefBUILD_DLL#define DLL_EXPORT __declspec(dllexport)#else#define DLL_EXPORT__declspec(dllimport)#endif#ifdef__cplusplusextern "C"//这个语句是便于c++程序调用该动态库中的c语言函数{#endifvoidDLL_EXPORThello()
4、;//注意这里一定要用DLL_EXPORT修饰输出函数的声明#ifdef__cplusplus}#endif#endif//TRYDLL_H_INCLUDED二、测试已封装好的rtrydll。dll调用1、显式调用新建一个工程用以显式调用dll,将rtrydll.dll动态库拷贝到该工程下,并且将rtrydll.dll动态库中对外输出函数的头文件添加到该工程中,程序由①LoadLibrary,装载动态库。ﻫ②GetProcAddress,获取要引入的函数,将符号名或标识号转换为DLL内部地址。ﻫ③FreeLibra
5、ry,释放动态链接库。显式调用代码#include 〈stdio。h>#include6、yfailed!\n"); FreeLibrary(HDll); return(0); } dll_funhello; hello=(dll_fun) GetProcAddress(HDll,"hello");//获取动态库中的输出函数 hello();//调用获取出来的函数 FreeLibrary(HDll);//不再使用动态库时释放动态库return0;}2、隐式调用隐式调用非常简单,新建隐式调用dll的工程,命名为testdll_yinshi,将rtrydll。dll、rtrydll.dll。a动7、态库拷贝到该工程下,project-—-〉buildoption--->linkersetting--->linklibraries--—>add,添加拷贝过来的rtrydll。dll。a文件,点击ok按钮,如下图,即设置相关路径并且将rtrydll。dll动态库中对外输出函数的头文件添加到该工程中,即可直接调用dll中的函数。隐式调用代码:#include <stdio.h>#include<stdlib。h〉#include"trydll。h"//包含动态库的输出文件的头文件intmain(){ hello()8、;//直接引用动态库中的函数名即可实现调用 return0;}
6、yfailed!\n"); FreeLibrary(HDll); return(0); } dll_funhello; hello=(dll_fun) GetProcAddress(HDll,"hello");//获取动态库中的输出函数 hello();//调用获取出来的函数 FreeLibrary(HDll);//不再使用动态库时释放动态库return0;}2、隐式调用隐式调用非常简单,新建隐式调用dll的工程,命名为testdll_yinshi,将rtrydll。dll、rtrydll.dll。a动
7、态库拷贝到该工程下,project-—-〉buildoption--->linkersetting--->linklibraries--—>add,添加拷贝过来的rtrydll。dll。a文件,点击ok按钮,如下图,即设置相关路径并且将rtrydll。dll动态库中对外输出函数的头文件添加到该工程中,即可直接调用dll中的函数。隐式调用代码:#include <stdio.h>#include<stdlib。h〉#include"trydll。h"//包含动态库的输出文件的头文件intmain(){ hello()
8、;//直接引用动态库中的函数名即可实现调用 return0;}
此文档下载收益归作者所有