相关资料:
http://blog.csdn.net/jshayzf/article/details/23608705
http://blog.csdn.net/huang_xw/article/details/7524359
实际操作:
1.文件->新建->项目->Win32->Win32项目->写入名字"DBEngine"->确定->下一步->选择"DLL"->完成。
2.生成->生成解决方案->"DLL\DBEngine\Debug\"下面就有出现.dll文件了。3.头文件->右击->添加->新建项->Visual C++->代码->头文件(.h)->写入名字"DataAccess.h"->添加。代码:#ifndef DataAccess_H_#define DataAccess_H_#ifdef DBEngine#define DBEngine extern "C" _declspec(dllimport) #else#define DBEngine extern "C" _declspec(dllexport) #endifDBEngine int Add(int plus1, int plus2);#endif4.源文件->右击->添加->新建项->Visual C++->代码->C++文件(.cpp)->写入名字"DataAccess.cpp"->添加。
代码:#include "stdafx.h"#include "DataAccess.h"#include <iostream>using namespace std;int Add(int plus1, int plus2){ int add_result = plus1 + plus2; return add_result;}5.源文件->右击->添加->新建项->Visual C++->代码->模块定义文件(.def)->写入名字"DataAccess.def"->添加。
代码:LIBRARY "DBEngine"EXPORTSAdd @16.VS2010自动定义好了DLL入口。
7.生成->生成解决方案->"DLL\DBEngine\Debug\"就出现新的.dll文件与.lib了。
//***************************************Delphi调用DLL**************************************//
1.新建一个Delphi工程。2.放入DLL。3.写入如下代码:1 unit Unit1; 2 3 interface 4 5 uses 6 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 7 Dialogs, StdCtrls, Buttons; 8 9 type10 TForm1 = class(TForm)11 BitBtn1: TBitBtn;12 procedure BitBtn1Click(Sender: TObject);13 private14 { Private declarations }15 public16 { Public declarations }17 end;18 19 var20 Form1: TForm1;21 22 23 function Add(Aint: Integer; Aint2: Integer):Integer; cdecl; external 'DBEngine.dll';24 25 26 implementation27 28 { $R *.dfm}29 30 procedure TForm1.BitBtn1Click(Sender: TObject);31 var32 AddValue:Integer;33 begin 34 AddValue := Add(1, 2);35 Caption := IntToStr(AddValue);36 end;37 38 end.
4.F9运行就可以看到结果了。
PS:声明中不加__stdcall,采用VC默认格式__cdecl,但在Delphi中要注明调用格式为cdecl。