社区
进程/线程/DLL
帖子详情
请问如何用VC创建一个WIN32 DLL,有没有这方面的详细资料
VisualLion
2003-08-21 01:43:37
我们公司最近要用VC,请问如何用VC创建一个WIN32 DLL,有没有这方面的详细资料
...全文
247
14
打赏
收藏
请问如何用VC创建一个WIN32 DLL,有没有这方面的详细资料
我们公司最近要用VC,请问如何用VC创建一个WIN32 DLL,有没有这方面的详细资料
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
farfh
2003-08-22
打赏
举报
回复
声明该函数
blastball
2003-08-22
打赏
举报
回复
.h 中 extern "C" __declspec(dllexport) bool WINAPI function();
.def中 EXPORTS function @1
cblxy
2003-08-22
打赏
举报
回复
我把***.lib加到link里面后,我要调用DLL里面的函数.
比如我在DLL里面定义了,
void _declspec(dllexport) JustSoSo()
{
MessageBox(NULL,"See you","See we",MB_OK);
}
可我要调用这个函数就直接写 JustSoSo();好像不行!
我还有什么工作要做呢?
ypdxcn
2003-08-21
打赏
举报
回复
com
BSRONG
2003-08-21
打赏
举报
回复
使用时,直接把生成的.dll和.lib文件考到你要用的目录,然后project/setting/link里加入
***.lib,然后再你的应用程序中就可以直接用dll中的 函数了
incats
2003-08-21
打赏
举报
回复
在同名的Def里.
farfh
2003-08-21
打赏
举报
回复
你用appwizard,可以创建一个带有引出接口,引出变量,和引出类的例子代码,就是最后那一个Win32 Dynamic-Link Library,进去之后选第三个,出来后就有代码了,很容易的。
David_7678
2003-08-21
打赏
举报
回复
以前没用过,学习
cuterain
2003-08-21
打赏
举报
回复
慢慢来,先把概念搞懂,然后就很快了…
写dll和写其他应用程序没有什么区别,其不过多了一些死语法和特殊函数。
给你发一般文章看看。
//////////////////////////////////////////////////////////////////////////////
一、前言
自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上Windows操作系统中几乎所有的内容都由DLL以一种或另外一种形式代表着,例如显示的字体和图标存储在GDI DLL中、显示Windows桌面和处理用户的输入所需要的代码被存储在一个User DLL中、Windows编程所需要的大量的API函数也被包含在Kernel DLL中。
在Windows操作系统中使用DLL有很多优点,最主要的一点是多个应用程序、甚至是不同语言编写的应用程序可以共享一个DLL文件,真正实现了资源"共享",大大缩小了应用程序的执行代码,更加有效的利用了内存;使用DLL的另一个优点是DLL文件作为一个单独的程序模块,封装性、独立性好,在软件需要升级的时候,开发人员只需要修改相应的DLL文件就可以了,而且,当DLL中的函数改变后,只要不是参数的改变,程序代码并不需要重新编译。这在编程时十分有用,大大提高了软件开发和维护的效率。
既然DLL那么重要,所以搞清楚什么是DLL、如何在Windows操作系统中开发使用DLL是程序开发人员不得不解决的一个问题。本文针对这些问题,通过一个简单的例子,即在一个DLL中实现比较最大、最小整数这两个简单函数,全面地解析了在Visual C++编译环境下编程实现DLL的过程,文章中所用到的程序代码在Windows98系统、Visual C++6.0编译环境下通过。
二、DLL的概念
DLL是建立在客户/服务器通信的概念上,包含若干函数、类或资源的库文件,函数和数据被存储在一个DLL(服务器)上并由一个或多个客户导出而使用,这些客户可以是应用程序或者是其它的DLL。DLL库不同于静态库,在静态库情况下,函数和数据被编译进一个二进制文件(通常扩展名为*.LIB),Visual C++的编译器在处理程序代码时将从静态库中恢复这些函数和数据并把他们和应用程序中的其他模块组合在一起生成可执行文件。这个过程称为"静态链接",此时因为应用程序所需的全部内容都是从库中复制了出来,所以静态库本身并不需要与可执行文件一起发行。
在动态库的情况下,有两个文件,一个是引入库(.LIB)文件,一个是DLL文件,引入库文件包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行是再把程序代码和被调用的函数代码链接起来,从而节省了内存资源。从上面的说明可以看出,DLL和.LIB文件必须随应用程序一起发行,否则应用程序将会产生错误。
微软的Visual C++支持三种DLL,它们分别是Non-MFC Dll(非MFC动态库)、Regular Dll(常规DLL)、Extension Dll(扩展DLL)。Non-MFC DLL指的是不用MFC的类库结构,直接用C语言写的DLL,其导出的函数是标准的C接口,能被非MFC或MFC编写的应用程序所调用。Regular DLL:和下述的Extension Dlls一样,是用MFC类库编写的,它的一个明显的特点是在源文件里有一个继承CWinApp的类(注意:此类DLL虽然从CWinApp派生,但没有消息循环),被导出的函数是C函数、C++类或者C++成员函数(注意不要把术语C++类与MFC的微软基础C++类相混淆),调用常规DLL的应用程序不必是MFC应用程序,只要是能调用类C函数的应用程序就可以,它们可以是在Visual C++、Dephi、Visual Basic、Borland C等编译环境下利用DLL开发应用程序。
常规DLL又可细分成静态链接到MFC和动态链接到MFC上的,这两种常规DLL的区别将在下面介绍。与常规DLL相比,使用扩展DLL用于导出增强MFC基础类的函数或子类,用这种类型的动态链接库,可以用来输出一个从MFC所继承下来的类。
扩展DLL是使用MFC的动态链接版本所创建的,并且它只被用MFC类库所编写的应用程序所调用。例如你已经创建了一个从MFC的CtoolBar类的派生类用于创建一个新的工具栏,为了导出这个类,你必须把它放到一个MFC扩展的DLL中。扩展DLL 和常规DLL不一样,它没有一个从CWinApp继承而来的类的对象,所以,开发人员必须在DLL中的DllMain函数添加初始化代码和结束代码。
cuterain
2003-08-21
打赏
举报
回复
慢慢来,先把概念搞懂,然后就很快了…
写dll和写其他应用程序没有什么区别,其不过多了一些死语法和特殊函数。
给你发一般文章看看。
//////////////////////////////////////////////////////////////////////////////
一、前言
自从微软推出16位的Windows操作系统起,此后每种版本的Windows操作系统都非常依赖于动态链接库(DLL)中的函数和数据,实际上Windows操作系统中几乎所有的内容都由DLL以一种或另外一种形式代表着,例如显示的字体和图标存储在GDI DLL中、显示Windows桌面和处理用户的输入所需要的代码被存储在一个User DLL中、Windows编程所需要的大量的API函数也被包含在Kernel DLL中。
在Windows操作系统中使用DLL有很多优点,最主要的一点是多个应用程序、甚至是不同语言编写的应用程序可以共享一个DLL文件,真正实现了资源"共享",大大缩小了应用程序的执行代码,更加有效的利用了内存;使用DLL的另一个优点是DLL文件作为一个单独的程序模块,封装性、独立性好,在软件需要升级的时候,开发人员只需要修改相应的DLL文件就可以了,而且,当DLL中的函数改变后,只要不是参数的改变,程序代码并不需要重新编译。这在编程时十分有用,大大提高了软件开发和维护的效率。
既然DLL那么重要,所以搞清楚什么是DLL、如何在Windows操作系统中开发使用DLL是程序开发人员不得不解决的一个问题。本文针对这些问题,通过一个简单的例子,即在一个DLL中实现比较最大、最小整数这两个简单函数,全面地解析了在Visual C++编译环境下编程实现DLL的过程,文章中所用到的程序代码在Windows98系统、Visual C++6.0编译环境下通过。
二、DLL的概念
DLL是建立在客户/服务器通信的概念上,包含若干函数、类或资源的库文件,函数和数据被存储在一个DLL(服务器)上并由一个或多个客户导出而使用,这些客户可以是应用程序或者是其它的DLL。DLL库不同于静态库,在静态库情况下,函数和数据被编译进一个二进制文件(通常扩展名为*.LIB),Visual C++的编译器在处理程序代码时将从静态库中恢复这些函数和数据并把他们和应用程序中的其他模块组合在一起生成可执行文件。这个过程称为"静态链接",此时因为应用程序所需的全部内容都是从库中复制了出来,所以静态库本身并不需要与可执行文件一起发行。
在动态库的情况下,有两个文件,一个是引入库(.LIB)文件,一个是DLL文件,引入库文件包含被DLL导出的函数的名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到所需要使用的DLL文件,库中的函数和数据并不复制到可执行文件中,因此在应用程序的可执行文件中,存放的不是被调用的函数代码,而是DLL中所要调用的函数的内存地址,这样当一个或多个应用程序运行是再把程序代码和被调用的函数代码链接起来,从而节省了内存资源。从上面的说明可以看出,DLL和.LIB文件必须随应用程序一起发行,否则应用程序将会产生错误。
微软的Visual C++支持三种DLL,它们分别是Non-MFC Dll(非MFC动态库)、Regular Dll(常规DLL)、Extension Dll(扩展DLL)。Non-MFC DLL指的是不用MFC的类库结构,直接用C语言写的DLL,其导出的函数是标准的C接口,能被非MFC或MFC编写的应用程序所调用。Regular DLL:和下述的Extension Dlls一样,是用MFC类库编写的,它的一个明显的特点是在源文件里有一个继承CWinApp的类(注意:此类DLL虽然从CWinApp派生,但没有消息循环),被导出的函数是C函数、C++类或者C++成员函数(注意不要把术语C++类与MFC的微软基础C++类相混淆),调用常规DLL的应用程序不必是MFC应用程序,只要是能调用类C函数的应用程序就可以,它们可以是在Visual C++、Dephi、Visual Basic、Borland C等编译环境下利用DLL开发应用程序。
常规DLL又可细分成静态链接到MFC和动态链接到MFC上的,这两种常规DLL的区别将在下面介绍。与常规DLL相比,使用扩展DLL用于导出增强MFC基础类的函数或子类,用这种类型的动态链接库,可以用来输出一个从MFC所继承下来的类。
扩展DLL是使用MFC的动态链接版本所创建的,并且它只被用MFC类库所编写的应用程序所调用。例如你已经创建了一个从MFC的CtoolBar类的派生类用于创建一个新的工具栏,为了导出这个类,你必须把它放到一个MFC扩展的DLL中。扩展DLL 和常规DLL不一样,它没有一个从CWinApp继承而来的类的对象,所以,开发人员必须在DLL中的DllMain函数添加初始化代码和结束代码。
VisualLion
2003-08-21
打赏
举报
回复
可我很笨,在那里写函数和对外的接口啊
darkxiao
2003-08-21
打赏
举报
回复
New --> Project --> Win32 Dynamic-Link Library
incats
2003-08-21
打赏
举报
回复
用向导,就能建出一个来.
DDHuang
2003-08-21
打赏
举报
回复
到处都是!
在
VC
中创建
DLL
文件的方法和步骤(
win32
和MFC完整实例).doc
在
VC
中创建
DLL
文件的方法和步骤(
win32
和MFC完整实例).doc
【转】用
VC
6.0创建和调用
win32
dll
一、生成
DLL
1、用
VC
建立一个
Win32
DLL
工程--
Dll
Test,选上“导出符号”; 2、在
Dll
Test.cpp中编写导出函数Fun(),这个函数是别的程序要调用的函数: 1: #include "
Dll
Test.h" 2: int fun(int i) 3: { 4: return i*i; 5: } 3、在
Dll
Test.h中声明导出
Win32
dll
的简单创建与使用
文章利用
vc
++6.0简单的创建了
dll
工程,并生成
dll
文件。同时,在
win32
控制台程序中进行了应用。
VC
6.0
Win32
动态链接库的创建与调用
动态链接库相比与静态链接库,所占用的内存空间小,较少交换时间,生成的
dll
文件也小,而且相应速度也快,静态链接库是将
DLL
程序为每一个应用程序装载一个副本程序,而动态链接库在多个文件同步使用一个
DLL
的共享内存中副本。 动态链接库分为
Win32
DLL
和 MFC
DLL
,而后者又分为静态链接的常规
DLL
,动态链接的
DLL
和 扩展
DLL
。 针对
Win32
DLL
创建 ...
Win32
DLL
和MFC
DLL
中封装对话框
Win32
DLL
和MFC
DLL
中封装对话框 分类: 挂挂2007-07-02 12:36 3344人阅读 评论(1) 收藏 举报 现在最常看见的关于
DLL
的问题就是如何在
DLL
中使用对话框,这是一个很普遍的关于如何在
DLL
中使用资源的问题。这里我们从
Win32
DLL
和MFC
DLL
两个方面来分析并解决这个问题。 1.
Win32
进程/线程/DLL
15,472
社区成员
49,183
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章