您的位置:首页 > 编程语言 > C语言/C++

用CodeGear C++ Builder 2007编写dll程序(一)

2007-10-19 22:57 246 查看
首先,谢谢老妖的www.ccrun.com,提供了很多关于用BCB写dll的例子和文章。这个一个专业的BCB网站。

其次,因为一些原因,一直没有写过dll,一般都是静态库比较多,然后都一些现成的dll。就是没有写过,所以在这里借C++Builder 2007出来之际,写写。

进入正题:

建一个dll工程先 File->New->Other->C++ Builder Projects->Dynamic Link Library,如下图




然出会出现选择dll类型的对话框



确定后,如下:



第一步,我们在File1.c实现几个函数,如下定义

extern "C" __declspec(dllexport) int __stdcall GetCount();
extern "C" __declspec(dllexport) int __stdcall GetDouble(int v);

int __stdcall GetCount()
{
return 100;
}
int __stdcall GetDouble(int v)
{
return 2*v;
}

然后编译,就可以生成firstdll.dll和firstdll.lib,在这里,我们暂时使用动态装载的方式。

第二步,建一个VCL Forms Application工程。

在unit1.cpp中,我们增加如下代码
函数类型定义

typedef int __stdcall (* FGetCount )();
typedef int __stdcall (*FGetDouble)(int v);
在主窗体增加一个按钮,并产生单击事件,并加入如下代码

FGetCount GetCount ;
FGetDouble GetDouble;

HINSTANCE dd;
dd = LoadLibrary("firstdll.dll");
GetCount = (FGetCount )GetProcAddress(dd,"GetCount");
GetDouble= (FGetDouble)GetProcAddress(dd,"GetDouble");
ShowMessage(GetCount());
ShowMessage(GetDouble(100));

FreeLibrary(dd);

如果不记得函数名,可以用VC6的depends工具查看生成的dll。然后将firstdll.dll复制到test的工程debug目录,运行再按下这个按钮,会弹出"100"和“200”两个显示消息对话框。

这样就完成了第一个dll的编写。下一步,就是使用VCL的dll和静态库。(未完,请看下一节)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: