`
buliedian
  • 浏览: 1238476 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

怎样在C++ Builder中创建使用DLL

阅读更多

版权声明

请尊重原创作品。转载请保持文章完整性,并以超链接形式注明原始作者“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

    在C++Builder中创建DLL的步骤如下: 1. **新建工程**:首先,打开C++Builder,通过`File` -> `New` -> `Other...`,在New卡片中选择`DLL Wizard`,创建一个新的DLL项目。 2. **保存工程**:为新工程命名,例如`...

    C++ builder中创建及调用DLL.rar

    在C++ Builder中创建和调用DLL(动态链接库)是一项常见的编程任务,尤其是在需要复用代码、跨项目共享功能或者实现插件架构时。DLLs允许开发者将一些功能封装到单独的模块中,以便在多个应用程序之间共享,减少了...

    C++Builder 资料库

    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 MDI 调用 DLL 子窗体(基于 BCB2010)

    本篇文章将深入探讨如何在C++ Builder 2010中调用DLL(动态链接库)来实现MDI子窗体的创建和交互。 首先,我们需要了解DLL的作用。DLL是一种共享代码的机制,它可以被多个应用程序同时调用,减少了内存占用并提高了...

    在Borland C++ Builder6中写DLL初步入门.doc

    在Borland C++ Builder6中创建和使用DLL(动态链接库)是一个常见的编程任务,这对于软件开发中的模块化和代码重用至关重要。本教程主要介绍了如何通过简单的步骤实现DLL的编写和调用。 首先,我们需要创建一个DLL...

    C++ Builder 示例DLL

    这个示例DLL(动态链接库)是C++ Builder中创建的一个核心组件,用于提供可重用的代码和服务,可以在多个应用程序之间共享。 **DLL(动态链接库)基础** DLL是Windows操作系统中的一个重要概念,它允许将一组功能...

    C++builder 调用C# DLL

    这是一个C++builder 调用C# DLL的标准范例,通过该范例的学习可以掌握BCB调用C#的DLL的方法。具有很强的学习和借鉴意义。

    c++builder隐式连接DLL

    1. 创建DLL项目:在C++Builder中新建一个DLL项目,选择相应的模板,例如VCL DLL或Console DLL。在这个项目中,定义你要导出的函数和类。 2. 定义导出函数:使用`__declspec(dllexport)`关键字标记你想要从DLL中导出...

    C++ builder 6 dll编写示例

    创建DLL的第一步是在C++ Builder 6中选择"新建",然后在项目类型中选择"VCL库"。接着,为项目命名并选择保存位置。一旦项目创建完成,我们就可以开始编写函数声明和实现。函数声明应放在头文件(通常是`.h`或`.hpp`...

    C++builder创建bpl库,并调用

    为了使这些类能在其他项目中使用,你需要在Package的接口部分(.dcp文件)声明它们。共享变量也类似,可以通过声明全局变量或静态成员来实现。确保在编译Package时,这些类和变量会被导出到可被外部程序访问的头文件...

    C++ Builder MDi程序中 通过DLL调用窗体

    本文将深入探讨如何在C++ Builder MDI程序中通过DLL来封装和使用子窗体。 首先,了解DLL的基本概念。DLL是一种可执行文件,它包含了一组可重用的函数和资源,可供多个应用程序同时调用。在C++ Builder中,创建DLL...

    在 C++Builder6中使用OpenCV1.1的懶人包,可直接使用OpenCV各項函式

    在C++Builder6中使用OpenCV1.1的懒人包是一个非常方便的方式来快速集成OpenCV库到你的项目中。OpenCV(Open Source Computer Vision Library)是一个强大的计算机视觉和图像处理库,它提供了丰富的函数来处理图像和...

    C++ Builder调用Delphi的pas文件实例

    本实例探讨了如何在C++ Builder环境中调用Delphi编写的PAS(Pascal)文件,这涉及到接口设计、动态链接库(DLL)的使用以及跨语言的类型映射等关键知识点。 首先,Delphi是一种基于Pascal语言的开发工具,其编译后...

    c++builder回调函数例子

    这个例子展示了如何在C++ Builder中使用回调函数在动态库和主程序之间传递数据和控制流。回调函数是C++ Builder和DLL编程中常见的技术,它增强了代码的灵活性和可扩展性。在实际项目中,可能需要处理更复杂的数据...

    GNU Scientific Library (GSL) 科学计算库在c++builder中的安装和使用

    4. **创建导入库:** 为了在 C++Builder 中使用 GSL 的动态链接库(DLL),需要创建对应的导入库。这可以通过 `implib` 命令来实现: - `implib aflib gsl.lib libgsl.dll` - `implib aflib gslcblas.lib ...

    C++Builder的系统钩子.zip_C Builder_C++builder

    开发者在"C++Builder编写作的系统钩子"中,会详细讲解如何使用C++Builder的工具和API来创建、安装和管理系统钩子,以及如何处理由钩子截获的事件。学习这部分知识可以帮助开发者深入了解Windows系统的工作原理,提升...

    MD5 DLL库及使用 (for C++ Builder)

    在C++ Builder环境中,MD5 DLL库提供了一种简便的方式,让开发者能够轻松地在自己的应用程序中集成MD5计算功能。这个压缩包包含三个文件:`UKmd5.cpp`是实现MD5算法的源代码,`UKmd5.dll`是编译后的动态链接库,`...

    C++Builder10中使用opencv2.1-2.rar

    在C++Builder中使用OpenCV,需要将库文件添加到项目的搜索路径,并链接所需的库。这通常包括设置包含目录(包含头文件)和库目录(库文件),以及链接器选项中的库依赖项。 1. **安装与配置OpenCV**: - 解压提供...

    精彩编程与编程技巧-在VB中如何调用C++Builder创建的DLL...

    本文将深入探讨如何在Visual Basic(简称VB)中调用由C++Builder创建的动态链接库(Dynamic Link Library,简称DLL),并解析其中涉及的关键技术细节和注意事项。 ### 在VB中调用C++Builder创建的DLL #### DLL的...

    c++builder自制控件

    7. **安装与部署**:自制控件完成后,需要打包成BPL(Binary Package Library)或DLL文件,以便在其他项目中使用。C++Builder提供了项目打包工具,可以将控件及其依赖项整合到安装包中,供用户安装。 8. **版本控制...

Global site tag (gtag.js) - Google Analytics