C++ Builder 开发DLL项目
来源:互联网 发布:知行论坛pt 编辑:程序博客网 时间:2024/04/27 18:47
环境:Win7-64bit + C++ Builder 6.0
开发一个DLL项目,并开发一个测试项目用来测试开发好的DLL。
1. 新建一个DLL项目
在Project Management中右键选择Add new project。选择DLL wizard。
点击OK,按照默认的配置,再点击OK。这样一个DLL项目新建起来了。
一般在一个project group中有多个项目,我们把DLL项目和测试的项目放在一个Project group中。
在Project Management中保存这个DLL项目,和这个project group。操作是右键选择保存即可。
资源管理器中是这样:
解释一下:
DLLProjectTest是根目录,相当于VS中的解决方案目录。
DLL1是存放DLL项目的;
DLLTest(事先建好的)是存放测试项目的;
include是存放共有文件,如DLL的导出头文件;
lib存放DLL生成的*.lib文件;
out用于存放DLL生成的*.dll和测试项目生成的*.exe,这样*.dll和*.exe在同一目录,*.exe运行时就能找到*.dll从而正常运行。
2. 配置DLL项目
配置DLL项目,使其生成的*.lib、*.dll生成在我们指定的目录。
project Management右键DLL1项目,选择Options
配置如下:
在Compiler选项卡,选中Full debug(一般默认选中的),开发完成后发布时选择Release;
在Packages中取消勾选Build with...,以生成没有不共享库的*.dll;
在Link中取消勾选Use dynamic RTL,不依赖共享库;
在Directories/Cond...中配置out、lib目录分别为..\out和..\lib,如果用到其他的头文件和lib文件,则还需要配置上面的Include path、Library path。
配置完成,点击OK完成配置。
3. 开发DLL。
建议不要使用默认生成的Unit1.cpp,我们自己定义自己的头文件和源文件。
回到资源管理器中,在include文件夹中新建文件dll.h,在DLL1文件夹中新建文件dll.cpp。确保两者是UTF-8编码!
然后在Project Management中右键DLL1项目选择Add将上面的dll.cpp添加到DLL1项目中(这是采用引用形式,即不拷贝文件),记住不要添加.h文件!。
下面是代码实现。
// dll.h
#ifndef DLL_H_INCLUDED#define DLL_H_INCLUDED#ifdef DLL_EXPORT#define DLL_API __declspec(dllexport)#else#define DLL_API __declspec(dllimport)#endif#ifndef EXTERN_C#define EXTERN_C extern "C"#endifEXTERN_C DLL_API int __stdcall add(int *p, int *q);#endif
// dll.cpp
#define DLL_EXPORT#include "dll.h"int __stdcall add(int *p, int *q){ return *p + *q;}
接着对DLL1项目Build,就可以在out、lib文件夹下看到想要的文件了。
4. 测试
在Project group下新建一个Application项目,保存为DLLTest。
配置DLLTest
在Compiler选项卡,选中Full debug(一般默认选中的),开发完成后发布时选择Release;
在Link中取消勾选Use dynamic RTL,不依赖共享库;
在Directories/Cond...中设置输出的out目录为..\out;在include path里加上..\include;在Library path里加上..\lib。
点击OK完成配置。
在Form中新建一个按钮来测试。
// Unit2.cpp
//---------------------------------------------------------------------------#include <vcl.h>#pragma hdrstop#include "Unit2.h"#include "dll.h" // 括入dll头文件#pragma link "DLL1.lib" // 链接时需要的*.lib文件//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"TForm2 *Form2;//---------------------------------------------------------------------------__fastcall TForm2::TForm2(TComponent* Owner) : TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TForm2::Button1Click(TObject *Sender){ int m = 100; int n = 119; int ret = add(&m, &n); ShowMessage(ret); }//---------------------------------------------------------------------------运行DLLTest,打印出正确结果。测试完成。整个开发就是这样 :)
- C++ Builder 开发DLL项目
- 用C++Builder开发动画DLL
- C++Builder、C#、VC调用 C++Builder制作的DLL
- c++builder调用vc的dll
- c++builder调用vc的dll
- C++Builder将对话框封装进Dll
- C++Builder建立及调用DLL
- VC DLL转换C++builder Lib
- c++builder调用VC的dll以及VC调用c++builder的dll
- C++Builder调用VC的dll以及VC调用C++Builder的dll
- c++builder调用VC的dll以及VC调用c++builder的dll
- C++Builder开发Web应用程序
- C++Builder中开发Activex
- C++Builder中开发Activex
- 命令行编译C++Builder/Delphi项目
- 怎样在C++Builder中创建使用DLL
- C++Builder编写dll时如何添加共享数据段
- 在C#中调用C++Builder编写的DLL
- 项目管理软件 Redmine 安装
- 使用向量实现敌人向英雄走动
- vrml 读取和写入
- KVM问题锦集及解决方法
- matlab 一副图片中添加多个矩形
- C++ Builder 开发DLL项目
- Visual Studio 2013 官方免费社区版/简体中文旗舰版下载 (VS2013 MSDN原版ISO镜像)
- centos 6.5安装zebra-0.95
- 算法导论--学习笔记010
- hdoj进制转换
- 133A - HQ9+
- BZOJ 2219 数论之神 数论
- SDRAM的地址映射方式BRC(Bank Row Column)和RBC(Row Bank Column)
- loop & butterfly subdivison