我现在做了一个C++的DLL库,其中头文件如下:
#ifndef __NC_SELFPROTOCOL_H__
#define __NC_SELFPROTOCOL_H__#include <malloc.h>#ifdef WIN32
#define INFOSEC_NSC_DLL_EXPORT __declspec(dllexport)
#else
#define INFOSEC_NSC_DLL_EXPORT
#endif#define INFOSEC_NSC_SELF_PROTOCOL_PARSE_SUCC 0
#define INFOSEC_NSC_SELF_PROTOCOL_MEMORY_OUT 1
#define INFOSEC_NSC_SELF_PROTOCOL_PARSE_NOT_MODIFY 2
#define INFOSEC_NSC_SELF_PROTOCOL_PARSE_FLAG_ERROR 3int INFOSEC_NSC_DLL_EXPORT print_error(char *psErr);class INFOSEC_NSC_DLL_EXPORT CNSC_SelfProtocol
{
public:
CNSC_SelfProtocol();
~CNSC_SelfProtocol();public :
int print_error(char *psErr);
int ParseRequest(
char *psReqIN,
int iReqLenIN
);
int ParseResponse(
char *psRespIN,
int iRespLenIN
);
private:
char *m_psReqOUT;
char *m_psRespOUT;
};#endif现在我想在delphi中调用这个动态库,并实例化该类得到一个类实例,然后利用该类实例来调用DLL库中该类的public成员函数。我查了一些资料,但是是关于delphi中调用的DLL中C 接口,类似上边所说的,动态库里封装了一个类的这种,我不晓得在delphi中应该如何来生成类实例啦。恳请各位高手指教,多谢。
#ifndef __NC_SELFPROTOCOL_H__
#define __NC_SELFPROTOCOL_H__#include <malloc.h>#ifdef WIN32
#define INFOSEC_NSC_DLL_EXPORT __declspec(dllexport)
#else
#define INFOSEC_NSC_DLL_EXPORT
#endif#define INFOSEC_NSC_SELF_PROTOCOL_PARSE_SUCC 0
#define INFOSEC_NSC_SELF_PROTOCOL_MEMORY_OUT 1
#define INFOSEC_NSC_SELF_PROTOCOL_PARSE_NOT_MODIFY 2
#define INFOSEC_NSC_SELF_PROTOCOL_PARSE_FLAG_ERROR 3int INFOSEC_NSC_DLL_EXPORT print_error(char *psErr);class INFOSEC_NSC_DLL_EXPORT CNSC_SelfProtocol
{
public:
CNSC_SelfProtocol();
~CNSC_SelfProtocol();public :
int print_error(char *psErr);
int ParseRequest(
char *psReqIN,
int iReqLenIN
);
int ParseResponse(
char *psRespIN,
int iRespLenIN
);
private:
char *m_psReqOUT;
char *m_psRespOUT;
};#endif现在我想在delphi中调用这个动态库,并实例化该类得到一个类实例,然后利用该类实例来调用DLL库中该类的public成员函数。我查了一些资料,但是是关于delphi中调用的DLL中C 接口,类似上边所说的,动态库里封装了一个类的这种,我不晓得在delphi中应该如何来生成类实例啦。恳请各位高手指教,多谢。
解决方案 »
- 重装操作系统,程序也能运行?
- 登录淘宝失败 高手给看看哪错了 谢谢
- 如何在图表上标注信息,谢谢解答,“顶” 就有分。在线等。
- 各位大虾,在DELPHI7我怎么也找不到象DELPHI6下Tclientsock的socket封装控件(帮帮忙)
- 急问题求教:关于调试
- 急,急:请教: 用POP3控件当connect远程主机失败时,系统弹出出错信息程序异常终止,用try-excption 不行,怎么控制不能退出程序? 谢谢
- 如何使用AdjustTokenPrivileges()获得SE_SHUTDOWN_NAME?在线等待,解决后马上结帐
- 帮帮小弟我吧!
- 问题问题!!!!!!
- 《mastering delphi 6》的第一部分第一章第二节以完成
- 有没有与 incyear() 函数对应的减少年份的一个函数啊,
- 很急!!****这个问题是关于Windows的,本来不该在这个版来提问,但这高手比较多,所以还是请教一下这里的朋友
现在我想在delphi中调用这个动态库,并实例化该类得到一个类实例,然后利用该类实例来调用DLL库中该类的public成员函数。
》》》》》
这个比较有难度,因为c++的类实例的内存布局和delphi的不一定相同,所以你只能通过抽象类来进行通信,不是几句话能够说清楚的。其实com技术就是解决你这样的问题的,你可以用C++写成com对象,然后delphi调用。
你看看这方面的书,明白了com的原理后,解决你的问题很容易。
传递句柄给XEXEC函数,进行控制。
传递句柄给XCLOSE函数,进行销毁。