Delphi XE 调用 C++ Builder XE 开发的DLL库
来源:互联网 发布:南昌大学教学网络平台 编辑:程序博客网 时间:2024/06/04 18:42
【首先用C++ Builder XE 制作DLL】
步骤1:File→New→Other→C++ Builder Project→Dynamic link Library,新建一个DLL工程。保存默认文件名File1.c为DllEntry.c,保存工程文件名为myDLL.cbproj。
步骤2:File→New→Unit - C++Builder,新建一个C文件,保存为UMyDll.c。
步骤3:向UMyDll.c添加代码如下:
//---------------------------------------------------------------------------
#pragma hdrstop
#include "UMyDll.h"
#include "Math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
double dblValue(double);
double halfValue(double);
//extern "C" _export _stdcall double changeValue(double, bool);
double dblValue(double value)
{
return value * value * value * sin(2);
};
double halfValue(double value)
{
return value / 2.0;
}
double _export _stdcall changeValue(double value, bool whichOp)
{
return whichOp ? dblValue(value) : halfValue(value);
}
步骤4(可选):为防止在一个程序文件中多次包含头文件,可以将UMyDll.c中的extern "C" _export _stdcall double changeValue(double, bool);移入UMyDll.h中,如下:
原始UMyDll.h文件内容:
//---------------------------------------------------------------------------
#ifndef UmyDllH
#define UmyDllH
//---------------------------------------------------------------------------
#endif
移入extern "C" _export _stdcall double changeValue(double, bool);后的UMyDll.h文件内容:
//---------------------------------------------------------------------------
#ifndef UmyDllH
#define UmyDllH
//---------------------------------------------------------------------------
#ifdef __cplusplus
extern "C"
{
#endif
extern "C" _export _stdcall double changeValue(double, bool);
#ifdef __cplusplus
}
#endif
#endif
步骤5:编译生成Dll文件MyDll.dll。
【在Delphi XE中调用生成的MyDll.dll】
步骤1:新建一个Delphi工程,保存工程为MyTest.proj,保存单元文件为Unit1.pas,在Form1中添加两个按钮Button1和Button2,一个文本框Edit1,修改Unit1.pas内容如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
BtnAction: TButton;
BtnClose: TButton;
Edit1: TEdit;
procedure BtnCloseClick(Sender: TObject);
procedure BtnActionClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function changeValue(x:Double;f:Boolean):Double;stdcall;external 'test.dll';
procedure TForm1.BtnActionClick(Sender: TObject);
begin
Edit1.Text:=FloatToStr(changeValue(3,True));
end;
procedure TForm1.BtnCloseClick(Sender: TObject);
begin
Close;
end;
end.
步骤2:编译、运行,如下图。
- Delphi XE 调用 C++ Builder XE 开发的DLL库
- DELPHI XE 调用 DELPHI 7 写的DLL的问题
- BCB(C++Builder或Embarcadero XE)中调用托管DLL的方法(C++调用C#的DLL)
- Delphi XE 开发IOS
- DevExpress VCL 2014将只支持Delphi/C++Builder XE
- C++Builder XE升级内容
- Delphi xe移动开发资料
- DELPHI XE Android 开发笔记
- app开发利器 delphi xe
- C++Builder XE的正则表达式类TRegEx
- Delphi XE 的字符串理解
- Delphi XE TLinkLabel的使用
- Delphi XE中动态表达式的应用 (调用自定义函数)
- XE
- DELPHI XE开发Office Add-In
- Delphi XE开发 Android 开机自动启动
- C++Builder XEn使用BCB6的DLL(以BCB6中流行的DES加密控件WCDESComp通过DLL供XE使用的方法为例)
- Delphi XE 的一些新函数
- servlet中的配置方法
- Qt下如何获得本地网卡IP
- NET探秘:MSIL权威指南学习笔记(速读4-16)
- MySQL数据库灾难恢复
- 设计模式之原型模式
- Delphi XE 调用 C++ Builder XE 开发的DLL库
- aix 误删HD5或者损毁修复
- Linux进程控制
- python类定义内部调用对象的实例
- web.py等框架如何生成静态网页
- 为啥现阶段还是学习python2.X,不学python3
- 旅行售货员问题(回溯、分枝限界)
- linux学习笔记0
- 数据库系统原理教程 第七章 数据库恢复技术 习题集