使用C++Builder写DLL文件的过程详述-创新互联

打开C++Builder6集成开发界面,选择File-New-Other,弹出New Items对话框,选择DLL Wizard选项,在DLL Wizard对话框中选择Use VCL选项,点击OK按钮。进入界面后,此时工作空间名称和文件名称都是默认的,可以选择File-Save Project As重命名工作空间名称和文件名称等,当你新添加一个文件时,可以使用ctrl+s来重命名。
   接下来往这个DLL项目中分别添加Form和Data Module。他们都是在File-New-Form 与 File-New-Data Module中添加,名称重命名可ctrl+s实现。首先添加Data Module,弹出一个界面,在工具栏的BDE一项拖拽Query和Database控件,并设置Database的属性选项中的LoginPrompt为false值,防止弹出登录数据库的界面。
   以上都设置好后,还要设置一项,否则调用DLL文件是会报无法加载DLL文件。解决方法:创建DLL时编译链接时注意设置Project Options。Packages标签,去除Builder with runtime packages检查框;Linker标签,去除Use dynamic RTL检查框。其它选项说明,Directories/Conditionals可以设置生成DLL文件的最终路径,如我在Final output中输入../bin/,最后点击OK完成。

在掇刀等地区,都构建了全面的区域性战略布局,加强发展的系统性、市场前瞻性、产品创新能力,以专注、极致的服务理念,为客户提供网站设计、成都网站设计 网站设计制作定制网站开发,公司网站建设,企业网站建设,品牌网站建设,成都全网营销推广,成都外贸网站建设,掇刀网站建设费用合理。

下面给出部分接口代码:

(1) DLL端接口代码extern "C" __declspec(dllexport) bool __stdcall SetInstChangeLogInit(AnsiString DBName,TStrings *Params,AnsiString areacode,AnsiString username,TComponent* Owner);
BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
       return 1;
}
//---------------------------------------------------------------------------
bool __stdcall SetInstChangeLogInit(AnsiString DBName,TStrings *Params,AnsiString areacode,AnsiString username,TComponent* Owner)
{

//调用窗体的初始化函数,做些初始化操作

}

(2) 主调端接口代码

void __fastcall TFmMain::N33Click(TObject *Sender)
{
     ReSet(Sender);
       HINSTANCE hld;
       bool   (*SetInstChangeLogInit)(AnsiString DBName,TStrings *Params,AnsiString cAreaCode,AnsiString userName,TComponent* Owner);
       hld=LoadLibrary("setInstChangeLog.dll");
       if(hld)
       {
               (FARPROC &)SetInstChangeLogInit=GetProcAddress(hld,"SetInstChangeLogInit");
               if(SetInstChangeLogInit)
               {
                       if(!SetInstChangeLogInit(FmDm->Database1->DatabaseName,FmDm->Database1->Params,FmDm->AreaCode,FmDm->userName,this))
                               MessageBox(Handle,"模块中的函数执行错误(setInstChangeLog.dll)!!!","错误!",MB_OK|MB_ICONERROR);
               }
               else
                       MessageBox(Handle,"模块中的函数无法定位(setInstChangeLog.dll)!!!","错误!",MB_OK|MB_ICONERROR);
       }
       else
            MessageBox(Handle,"此功能没有提供","错误!       setInstChangeLog.dll!",MB_OK|MB_ICONERROR);

 FreeLibrary(hld);
}

总结:注意属性栏的属性设置。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页名称:使用C++Builder写DLL文件的过程详述-创新互联
文章来源:http://ybzwz.com/article/dhophg.html