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

来源:互联网 发布:java web开发实战pdf 编辑:程序博客网 时间:2024/06/05 04:05

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

原创粉丝点击