兴海北路

---男儿仗剑自横行
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

统计

  • 随笔 - 85
  • 文章 - 0
  • 评论 - 17
  • 引用 - 0

常用链接

留言簿(6)

随笔分类

随笔档案

收藏夹

全是知识啊

搜索

  •  

最新评论

阅读排行榜

评论排行榜

如何用VC编写DLL动态链接库文件?
作者: falcon   发表日期: 2006-04-24 14:51   复制链接



引言

前不久刚学会了如何用VB编写DLL动态链接库,但是用vb编写动态链接库比较麻烦些。下面我们再学习一下如何用vc编写dll动态链接库,并且通过vc或者vb调用

正文

这里主要介绍两个东东
第一:用vc编写动态链接库,用vc调用
第二:用vb编写动态链接库,用vb调用

一、用vc编写动态链接库,用vc调用

1、创建DLL文件,命名为FIRSTDLL

1)打开visual c++ 6.0通过new创建一个win30 Dynamic-link Libary的工程,命名为FIRSTDLL
2)接着选择最后一个选项,让系统帮我们创建一些必要的文件
3)把FIRSTDLL.cpp用下面的代码覆盖


Code:

[Ctrl+A Select All]


4)接着我们在FIRSTDLL.h头文件里头用下面的代码覆盖


Code:

[Ctrl+A Select All]


5)好拉,我们现在可以编译FIRSTDLL.cpp文件拉,到debug目录下看看,是不是已经生成拉我们需要的FIRSTDLL.dll拉

2、通过vb编写一个函数来调用该DLL,该函数为USEFIRSTDLL

1)同样通过new创建一个工程,该工程为win30 application,命名USEFIRSTDLL
2)在USEFIRSTDLL.cpp文件中用如下代码覆盖


Code:

[Ctrl+A Select All]



好拉,到这里第一部分介绍完拉
下面介绍第二部分


二、用vc编写动态链接库,用vb调用

在介绍这个之前必须声明的是(引用自下面的参考资料)

一个DLL中的函数要想被VB调用,必须满足两个条件:一是调用方式为stdcall,另一个是必须是export的。要做到第一条,只须在函数声明前加上__stdcall关键字。如:
  short __stdcall sample(short nLen, short *buffer)
  要做到第二条,需要在*.def文件中加上如下的几行:
  EXPORTS
  sample @1
  这里的sample是你要在VB中调用的函数名,@1表示该函数在DLL中的编号,每个函数都不一样。注意这里的函数名是区分大小写的。


1、下面我们类似一创建名为SecondDll的DLL文件

1)创建SecondDll,代码如下:


Code:

[Ctrl+A Select All]



2)往我们的工程里头添加一个SecondDll.def文件,内容如下


Code:

[Ctrl+A Select All]


解释一下哦:
@1是表示Max函数在DLL中函数组中是第一个函数,具体见参考资料

ok,保存
编译、创建我们的SecondDll.dll

2、通过Vb调用SecondDll.dll文件,来求两个数中的最大者

我们直接 编写一段代码如下哦


Code:

[Ctrl+A Select All]


看到效果没有啊,在我们的窗体标题中显示拉:"最大值是9"

到这里我们的工作接结束拉,不过要熟练掌握还得多编写程序拉,下面是我在学习时的参考资料,非常详细哦。
在这里,我真的是要谢谢那些专家们为我们免费提供了这么多参考资料,大家要好好珍惜才是,呵呵。


参考资料:
1)基于Visual C++6.0的DLL编程实现 http://hegeng2000.blogchina.com/3807138.html
2)VB和VC混合编程 http://www.china-askpro.com/msg1/qa72.shtml

posted on 2008-03-14 16:00 随意门 阅读(1718) 评论(0)  编辑 收藏 引用


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