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

原创 2007年09月12日 10:06:00

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 

相关文章推荐

C++动态库(Dll)的制作,导出类

1、完成类的封装: 如:CMyTestClass类/// CMyTestClass.h头文件中 /**************************************************...
  • bao_bei
  • bao_bei
  • 2016年06月03日 16:24
  • 2047

动态库导出静态库工具(dll2lib.exe)

  • 2011年07月28日 09:35
  • 568KB
  • 下载

DLL(动态库)导出函数名乱码含义

C++编译时函数名修饰约定规则:       __stdcall调用约定:       1、以"?"标识函数名的开始,后跟函数名;         2、函数名后面以"@@YG"标识参数...
  • solo2k
  • solo2k
  • 2016年01月22日 00:54
  • 584

C#使用EPPlus.dll动态库在一般处理程序中实现将datatable导出到excel

一、.如何安装EPPLus 1.在Visual Studio的解决方案的引用上右键选择管理NeGet程序包 2.在管理NuGet程序包中搜索EPPlus,点击进行安装,安装后便直接添加到引用了...

Unity中将c#导出DLL动态库

本文只作为参考,个人水平有限,望见谅! C#导出DLL,一开始就想到了将c++代码做成DLL的方法,各种复制粘贴宏定义,于是就找了一下C#导出DLL的一般方法,和后者如出一折,只是更简单一些,这里我...
  • zzmkljd
  • zzmkljd
  • 2016年10月14日 10:44
  • 888

.NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper

.NET 使用 MySql.Data.dll 动态库操作MySql的帮助类--MySqlHelper

动态库DLL中类的使用

一、DLL中类的导出 在类名称前增加 _declspec(dllexport)定义,例如: class _declspec(dllexport) CMath{ .... }; 通常使...

Android增量更新(二)-差分文件(Windows-part2)-dll动态库和jar包

上一篇博客《Android增量更新(一)-差分文件(Windows-part1)》中,已经通过VS把bsdiff源码编译成了.exe的可执行文件,为了更好地给第三方语言调用,现在准备把bsdiff编译...
  • ywl5320
  • ywl5320
  • 2017年10月23日 23:12
  • 172

ACE简介以及ACE_DLL动态库操作类的使用

http://egeho123.blogbus.com/logs/14071965.html 1 引言 接触ACE已经有长一段时间了,但一直来没有应用的实际需求,因此这方面的学习进展一直很慢,到目...

关于DLL动态库调用

  • 2014年12月01日 14:30
  • 73KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何将动态库(DLL)中的类导出(二)
举报原因:
原因补充:

(最多只允许输入30个字)