codeblocks动态链接库的实现.doc

codeblocks动态链接库的实现.doc

ID:62033090

大小:121.00 KB

页数:3页

时间:2021-04-15

codeblocks动态链接库的实现.doc_第1页
codeblocks动态链接库的实现.doc_第2页
codeblocks动态链接库的实现.doc_第3页
资源描述:

《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>#include

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;}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。