DLL学习系列之二:非MFC动态链接库

      使用动态链接库的好处这里就不提了,使用动态链接库往往需要两个文件一个引入库.lib文件,一个.dll文件。其中引入库文件包含导出函数和变量的名字,.dll文件中保存实际的函数和数据。在编译的时候,只将.lib文件链接.exe文件中去。.dll文件在运行时才被链接,所以叫做动态链接库。
      动态链接库有两种加载方式:隐式加载和显示加载。
      下边给出一个隐式加载的例子:
      新建一个Win32 Dynamic-Link Library Project,含有DLL.h和DLL.cpp两个文件:

//DLL.h
#ifndef DLL_H
#define DLL_H
extern "C" int __declspec(dllexport)add(int x, int y);
#endif

 

//DLL.cpp
#include"DLL.h"

int add(int a, int b)
{
   
return a+b;
}

编译生成两个文件DLL.lib和DLL.dll。下面测试这个DLL。新建一个工程DLLTest。

 

 

//DLLTest.cpp
#include <stdio.h>
extern "C" _declspec(dllexport)add(int a, int b);

int main()
{  
    printf(
"2+3=%d\n", add(2,3));
    
return 0;
}

然后将DLL.lib和DLL.dll两个文件拷贝到工作目录,并添加到工程文件中。如果从编译器中运行程序就要在工作目录下包含DLL.dll,如果从dubug文件夹下运行exe文件就必须在exe文件同目录下含有DLL.dll。DLL.lib文件一定放在工作目录下,因为是要和其他文件链接的。如果链接报错,尝试在Project-Setting-Link添加DLL.lib一项。编译通过后运行程序就可以看到我们正确使用了库中的加法。
       下面介绍显示的加载动态链接库的例子:
      未完待续。。。

posted on 2008-11-21 02:28 wangwei 阅读(158) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2024年4月>
31123456
78910111213
14151617181920
21222324252627
2829301234
567891011

导航

统计

常用链接

留言簿(2)

随笔分类

随笔档案

文章档案

收藏夹

搜索

最新评论

阅读排行榜

评论排行榜