C++ Builder 带VCL 的DLL

来源:互联网 发布:淘宝上的vr靠谱吗 编辑:程序博客网 时间:2024/06/16 08:56
  1. 建立DLL工程
  2. 编写DLL 文件的出口函数
  3. 带VCL的程序与普通程序不同之处为在调用函数进行FORM 定义,否则会出现,“Access Vio…”内存溢出报错。
    操作 参考:http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Creating_DLLs_Containing_VCL_Components_(C%2B%2B)
    4.编写调用程序入口函数:
#include <vcl.h>#include <windows.h>#include "TS.h"#include "data.h"#pragma hdrstop//---------------------------------------------------------------------------//   Important note about DLL memory management when your DLL uses the//   static version of the RunTime Library:////   If your DLL exports any functions that pass String objects (or structs///   classes containing nested Strings) as parameter or function results,//   you will need to add the library MEMMGR.LIB to both the DLL project and//   any other projects that use the DLL.  You will also need to use MEMMGR.LIB//   if any other projects which use the DLL will be performing new or delete//   operations on any non-TObject-derived classes which are exported from the//   DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling//   EXE's to use the BORLNDMM.DLL as their memory manager.  In these cases,//   the file BORLNDMM.DLL should be deployed along with your DLL.////   To avoid using BORLNDMM.DLL, pass string information using "char *" or//   ShortString parameters.////   If your DLL uses the dynamic version of the RTL, you do not need to//   explicitly add MEMMGR.LIB as this will be done implicitly for you//---------------------------------------------------------------------------extern "C" __declspec(dllexport)  __stdcall int Ts(float *pTS,int a, int *pData,ShortString *MatType,int *TypeCount)  ;#pragma argsusedBOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved){    return 1;} __declspec(dllexport)   __stdcall  int Ts(float *pTS,int a, int *pData,ShortString *MatType,int *TypeCount) //导出函数{}//以下是调用程序  #include <vcl.h>#pragma hdrstop#include "DB.h"//---------------------------------------------------------------------------#pragma package(smart_init)#pragma resource "*.dfm"extern "C" __declspec(dllimport)  __stdcall int  Ts(float *pTS,int a, int *pData,ShortString *MatType,int *TypeCount);
原创粉丝点击