C/C++中动态链接库的创建和调用
动态连接库的创建步骤:
一、创建non-mfc dll动态链接库
1、打开file ―> new ―> project选项,选择win32 dynamic-link library ―>sample project
―>工程名:dlldemo
2、新建一个.h文件dlldemo.h
| 以下是引用片段: #ifdef dlldemo_exports #define dllapi __declspec(dllexport) #else #define dllapi __declspec(dllimport) extern "c" //原样编译 { (文章来源 www.iocblog.net) dllapi int __stdcall max(int a,int b); //__stdcall使非c/c++语言内能够调用api } #endif |
3、在dlldemo.cpp文件中导入dlldemo.h文件,并实现max(int,int)函数
| 以下是引用片段: #include "dlldemo.h" dllapi int __stdcall max(int a,int b) { if(a==b) return null; else if(a>b) return a; else return b; } |
4、编译程序生成动态连接库
二、用.def文件创建动态连接库dlldemo.dll。
1、删除dlldemo工程中的dlldemo.h文件。
2、在dlldemo.cpp文件头,删除 #include dlldemo.h语句。
3、向该工程中加入一个文本文件,命名为dlldemo.def并写入如下语句:
library mydll
exports
max@1(文章来源 www.iocblog.net)
4、编译程序生成动态连接库。
动态链接的调用步骤:
一、隐式调用
1、 建立dllcnsltest工程
2、 将文件dlldemo.dll、dlldemo.lib拷贝到dllcnsltest工程所在的目录
3、 在dllcnsltest.h中添加如下语句:
| 以下是引用片段: #define dllapi __declspec(dllimport) #pragma comment(lib,"dlldemo.lib") //在编辑器link时,链接到dlldemo.lib文件 extern "c" { dllapi int __stdcall max(int a,int b); } |
4、在dllcnsltest.cpp文件中添加如下语句:
| 以下是引用片段: #include "dllcnsltest.h"//或者 #include "dlldemo.h" void main() { int value; value = max(2,9); printf("the max value is %d ",value); } |
5、编译并生成应用程序dllcnsltest.exe
二、显式调用
Tag: 动态链接库
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。