版权声明
请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“tingsking18”和主站点地址,方便其他朋友提问和指正。
动态链接库(DLL)是Windows编程常遇到的编程方法,下面我就介绍一下在BCB (C++ Builder下简称BCB) 中如何创建使用DLL和一些技巧。
一、创建:
使用BCB File|NEW建立一个新的DLL工程,并保存好文件BCB,生成一个DLL的程序框架。
1.DllEntryPoint函数为一个入口方法,如果使用者在DLL被系统初始化或者注销时被调用,用来写入对DLL的初始化程序和卸载程序;参数:hinst用来指示DLL的基地址;reason用来指示DLL的调用方式,用于区别多线程单线程对DLL的调用、创建、卸载DLL;
2.在程序中加入自己所要创建的DLL过程、函数;
3.用dllimport描述出口;
例程序如下:
#include
#pragma hdrstop
extern "C" __declspec(dllexport) int test();
int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason,void *)
{
return 1;
}
int test()
{
return 3;
}
注意:动态链接库中调用过程、函数时有不同的CALL方式 __cdecl、__pascal, __fastcall、__stdcall,BCB中默认的方式为__cdecl(可不写),如果考虑兼容性可用时__stdcall声明方法为:
extern "C" __declspec(dllexport) int __stdcall test();
对于其中过程、函数也改为:
int __stdcall test()
二、使用DLL
在BCB中使用DLL有两种方法:
1.用静态调用法
首先需要在BCB的项目中加入输入接口库(import library),打开工程项目,使用BCB View|Project Manager打开项目列表,向项目中加入接口库(*.lib)。
其次在头文件中加入接口声明。
例程序如下:
//define in include file
extern "C" __declspec(dllimport) int __cdecl test();
//use function in main program
int I;
I=test();
注意:
(1)动态链接库调用过程、函数时CALL方式 与创建时方式一样不写为__cdecl,其它需要声明。
(2)BCB创建的DLL有对应的输入接口库(import library),如只有DLL而无库时,可用BCB的implib工具产生:implib xxx.lib xxx.dll;另外可用:tlibxxx.lib,xxx.lst 产生DLL的内部函数列表,许多Windows的未公开技术就是用这种方法发现的。
2.动态调用法
动态调用法要用Windows API 中的LoadLibrary()和GetProcAddress()来调入DLL库,指出库中函数位置,这种方法较常见。
例程序如下:
HINSTANCE dd;
int _stdcall (*ddd)(void);
dd=LoadLibrary("xxx.dll");
ddd=GetProcAddress(dd,"test");
Caption=IntToStr(ddd());
FreeLibrary(dd);
三、注意:
创建DLL时编译链接时注意设置Project Options。
Packages标签:去除Builder with runtime packages检查框。
Linker标签:去除Use dynamic RTL检查框。
否则创建的DLL需要Runtime packages or Runtime library。
分享到:
相关推荐
在C++Builder中创建DLL的步骤如下: 1. **新建工程**:首先,打开C++Builder,通过`File` -> `New` -> `Other...`,在New卡片中选择`DLL Wizard`,创建一个新的DLL项目。 2. **保存工程**:为新工程命名,例如`...
在C++ Builder中创建和调用DLL(动态链接库)是一项常见的编程任务,尤其是在需要复用代码、跨项目共享功能或者实现插件架构时。DLLs允许开发者将一些功能封装到单独的模块中,以便在多个应用程序之间共享,减少了...
1.怎样在C++Builder中创建使用DLL 2.用C++Bulider在WIN.INI中保存信息 3.如何在C++Builder中检测硬件 4.C++Builder如何响应消息及自定义消息 5.利用C++ Builder开发动画DLL 6.用C++ Builder 3制作屏幕保护...
本篇文章将深入探讨如何在C++ Builder 2010中调用DLL(动态链接库)来实现MDI子窗体的创建和交互。 首先,我们需要了解DLL的作用。DLL是一种共享代码的机制,它可以被多个应用程序同时调用,减少了内存占用并提高了...
在Borland C++ Builder6中创建和使用DLL(动态链接库)是一个常见的编程任务,这对于软件开发中的模块化和代码重用至关重要。本教程主要介绍了如何通过简单的步骤实现DLL的编写和调用。 首先,我们需要创建一个DLL...
这个示例DLL(动态链接库)是C++ Builder中创建的一个核心组件,用于提供可重用的代码和服务,可以在多个应用程序之间共享。 **DLL(动态链接库)基础** DLL是Windows操作系统中的一个重要概念,它允许将一组功能...
这是一个C++builder 调用C# DLL的标准范例,通过该范例的学习可以掌握BCB调用C#的DLL的方法。具有很强的学习和借鉴意义。
1. 创建DLL项目:在C++Builder中新建一个DLL项目,选择相应的模板,例如VCL DLL或Console DLL。在这个项目中,定义你要导出的函数和类。 2. 定义导出函数:使用`__declspec(dllexport)`关键字标记你想要从DLL中导出...
创建DLL的第一步是在C++ Builder 6中选择"新建",然后在项目类型中选择"VCL库"。接着,为项目命名并选择保存位置。一旦项目创建完成,我们就可以开始编写函数声明和实现。函数声明应放在头文件(通常是`.h`或`.hpp`...
为了使这些类能在其他项目中使用,你需要在Package的接口部分(.dcp文件)声明它们。共享变量也类似,可以通过声明全局变量或静态成员来实现。确保在编译Package时,这些类和变量会被导出到可被外部程序访问的头文件...
本文将深入探讨如何在C++ Builder MDI程序中通过DLL来封装和使用子窗体。 首先,了解DLL的基本概念。DLL是一种可执行文件,它包含了一组可重用的函数和资源,可供多个应用程序同时调用。在C++ Builder中,创建DLL...
在C++Builder6中使用OpenCV1.1的懒人包是一个非常方便的方式来快速集成OpenCV库到你的项目中。OpenCV(Open Source Computer Vision Library)是一个强大的计算机视觉和图像处理库,它提供了丰富的函数来处理图像和...
本实例探讨了如何在C++ Builder环境中调用Delphi编写的PAS(Pascal)文件,这涉及到接口设计、动态链接库(DLL)的使用以及跨语言的类型映射等关键知识点。 首先,Delphi是一种基于Pascal语言的开发工具,其编译后...
这个例子展示了如何在C++ Builder中使用回调函数在动态库和主程序之间传递数据和控制流。回调函数是C++ Builder和DLL编程中常见的技术,它增强了代码的灵活性和可扩展性。在实际项目中,可能需要处理更复杂的数据...
4. **创建导入库:** 为了在 C++Builder 中使用 GSL 的动态链接库(DLL),需要创建对应的导入库。这可以通过 `implib` 命令来实现: - `implib aflib gsl.lib libgsl.dll` - `implib aflib gslcblas.lib ...
开发者在"C++Builder编写作的系统钩子"中,会详细讲解如何使用C++Builder的工具和API来创建、安装和管理系统钩子,以及如何处理由钩子截获的事件。学习这部分知识可以帮助开发者深入了解Windows系统的工作原理,提升...
在C++ Builder环境中,MD5 DLL库提供了一种简便的方式,让开发者能够轻松地在自己的应用程序中集成MD5计算功能。这个压缩包包含三个文件:`UKmd5.cpp`是实现MD5算法的源代码,`UKmd5.dll`是编译后的动态链接库,`...
在C++Builder中使用OpenCV,需要将库文件添加到项目的搜索路径,并链接所需的库。这通常包括设置包含目录(包含头文件)和库目录(库文件),以及链接器选项中的库依赖项。 1. **安装与配置OpenCV**: - 解压提供...
本文将深入探讨如何在Visual Basic(简称VB)中调用由C++Builder创建的动态链接库(Dynamic Link Library,简称DLL),并解析其中涉及的关键技术细节和注意事项。 ### 在VB中调用C++Builder创建的DLL #### DLL的...
7. **安装与部署**:自制控件完成后,需要打包成BPL(Binary Package Library)或DLL文件,以便在其他项目中使用。C++Builder提供了项目打包工具,可以将控件及其依赖项整合到安装包中,供用户安装。 8. **版本控制...