首先,谢谢老妖的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和静态库。(未完,请看下一节)