• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

如何将动态库(DLL)中的类导出(二)

发布: 2007-7-01 20:40 | 作者: admin | 来源: | 查看: 19次 | 进入软件测试论坛讨论

领测软件测试网

EXE文件: FMakeDll.cpp

 

//---------------------------------------------------------------------------

//使用静态调用,别忘了Project->Add to project...添加MakeDll.lib

 

#include <vcl.h>

#pragma hdrstop

#include "FTestDll.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

    : TForm(Owner)

{

    hMyDll = NULL;

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

    TestA(10);    

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button2Click(TObject *Sender)

{

    if(hMyDll != NULL)

    {

     ShowMessage("已经为对象分配资源!");

     return;

    }

 

    hMyDll = InitMakeDll();

 

    if(hMyDll != NULL)

    {

     ShowMessage("获得对象句柄成功!");

    }

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button3Click(TObject *Sender)

{

    int irtn;

 

    irtn = TestB(hMyDll,20);

 

    if(errOk == irtn)

    {

     ShowMessage("使用句柄执行测试函数B成功!");

    }

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button4Click(TObject *Sender)

{

    int irtn;

 

    //这种情况下需要使用者在程序中自己控制

    if(hMyDll == NULL)

    {

     ShowMessage("对象还没有被创建或已经释放");

     return;

    }

 

    irtn = ReleaseMakeDll(hMyDll);

 

    if(errOk == irtn)

    {

     ShowMessage("使用句柄释放对象成功!");

    }

 

    hMyDll = NULL;

}

//---------------------------------------------------------------------------

 

EXE文件: FTestDll.h

//---------------------------------------------------------------------------

#ifndef FTestDllH

#define FTestDllH

//---------------------------------------------------------------------------

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

//---------------------------------------------------------------------------

//DLL的导出函数文件(上面已经介绍过)

#include "MakeDll.h"

//---------------------------------------------------------------------------

class TForm1 : public TForm

{

__published:  // IDE-managed Components

    TButton *Button1;

    TButton *Button2;

    TButton *Button3;

    TButton *Button4;             

    void __fastcall Button2Click(TObject *Sender);

    void __fastcall Button1Click(TObject *Sender);

    void __fastcall Button3Click(TObject *Sender);

    void __fastcall Button4Click(TObject *Sender);

private: // User declarations

    //因为在整个窗体中需要使用hTestDll,定义在这里好了

    //从这里的声明根本不会看到有关原来的类的影子

    HANDLE hMyDll;

public:       // User declarations

    __fastcall TForm1(TComponent* Owner);

};

//---------------------------------------------------------------------------

extern PACKAGE TForm1 *Form1;

//--------------------------------------------------------------------------

#endif


延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备2023014753号-2
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网