- 注册时间
- 2011-10-23
- 最后登录
- 2011-10-31
- 阅读权限
- 30
- 积分
- 423
- 精华
- 0
- 帖子
- 136
 
升级   74.33%
|
Dev-Cpp/Mingw32 环境介绍(6)
上文回顾:
上文《Dev-Cpp/Mingw32 环境先容(5)》中,我们懂得了如何来制作静态衔接库。的确,上一片文章至今已经很长时光了。所以,我这次会用更多的内容往返报各位读者的。下面我们就来说说如何制作动态链接库。
第九章 制造本人的动态链接库
“我不做梦吧,Mingw32也能做win32的动态连接库?”对你没有做梦,我也没有胡说。下面我简略介绍一些动态库的生成和使用。
还是老样子,我们来开启Dev-Cpp,而后我们新建工程。抉择DLL工程。这个就是我们的链接库。在新建以后,我们会天生一个dll.h和一个工程名.c文件。其中,dll.h中保存的是你动态库的函数。下面我们看看我的文件内容。
//dll.h
#ifndef _DLL_H_
#define _DLL_H_
#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */
#endif /* _DLL_H_ */
#include <windows.h>
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
/* Returns TRUE on success, FALSE on failure */
return TRUE;
}
DLLIMPORT int HelloWorld(void);
//dll.h End
其中我在最后一行加入了自己的函数,HelloWorld。
下面咱们来看看我的HelloWorld.c
//HelloWorld.c
#include "dll.h"
DLLIMPORT int HelloWorld(void)
{
printf("Hello,World!");
return(0);
}
//HelloWorld.c End
好了,我们就来编译吧。使用Dev的编译命令或者用如下命令。
我们将会得到两个文件。一个libHelloWorld.a,一个HelloWorld.dll。我们使用这两个文件就可以编程了。
文外音:
说瞎话,这次这篇文章和前多少篇文章比拟距离确实有些长了。因为我前一阶段有些忙了,所以,这次为各位读者负疚了。下面我们要学的是如何使用刚才我们编写的动态库。
第十章 使用自己的动态链接库
上文回想:
上文,我们介绍了如何生成动态库。下面我们就来使用它吧。
新建一个工程main.c的文件如下
//main.c
#include <stdio.h>
#include <stdlib.h>
#include "dll.h"
int main()
{
HelloWorld();
return(0);
}
//main.c End
当初将方才那个工程中的 dll.h libHelloWorld.a HelloWorld.dll文件复制到你现在工程的目录里。
然后,我们现在开启工程属性。在链接器一栏中参加
-l"HelloWorld"
保留工程后编译。所有胜利后,我们就取得了应用动态链接库的方法了。当前我们只有修改链接库的HelloWorld就能够修正程序中的显示。盼望这篇文章各位能满足。
文外音:
确实,现在很忙,所以文章的品质也降落了不少。不外还是愿望给为可能多多体谅。最近在搞NASM汇编。发明实在Emcas和Nasm确切很不错。十分爱好。不过,C我仍是会寻求的。只是,可能以后跟各位的交换会少些,然而我还是会用我的文章来使各位失掉有关Dev的内容。本系列文章,未完,待续。
STUDIO软件开发组(SDT)
STUDIO Development Team
北斗星君(黄庠魁) |
|