#ifndef _DLL_H
#define _DLL_H#define DLLEXPORTS __declspec(dllexport) class DLLEXPORTS Dllclass
{
public:
void func1(void);
void func2(void);};
#endif;
delphi怎样引用这个类, 如果类的成员函数是虚函数
解决方案 »
- 三层项目 Delphi开发的com+ 使用原生recordset B/S使用C#开发
- delphi中用Qreport时如何在打印一张单据时,记录不足时表格线填充至一页,
- 请问下DELPHI 下调用个模块的功能是怎么实现的
- 赶场,散分,还不算晚吧!
- 本人用多年的积蓄,辛辛苦苦的攒了1万多块钱,现在想购买一台笔记本,大家给参考一下,买什么牌子的,还有型号
- 在form上画矩形后,怎么拾取该矩形,使其能随鼠标拖动而变化大小。
- 请问如何解决这种错误?谢谢
- 这段能实现MIME解码吗?具体是怎么使用的呢?小弟困惑不已
- 急!!通过OLE方式将数据导到EXCEL中,如何实现打印预览??
- 在canvas上画图,如何防止用鼠标移动绘图时产生的闪烁
- 2002年一位学VC的碰到了一个问题,3年来没有答案,2005年本人也碰到了这个问题,但一套VB开发的EASY EDITOR却解决了这个问题,但不知怎么解
- 有没有HTML的编辑控件
有些东西强求不来的~~~~~~~********************************************************************
*TryMyBestToKnowSomethingAboutEverythingAndEverythingAboutSomething!
********************************************************************
// {0505DD1E-63A9-4c74-BFEE-3EF34088B4E3}
static const IID IID_IDllClass =
{ 0x505dd1e, 0x63a9, 0x4c74, { 0xbf, 0xee, 0x3e, 0xf3, 0x40, 0x88, 0xb4, 0xe3 } };interface IDllClass:public IUnknown
{
STDMETHOD(func1) (THIS_) PURE;
STDMETHOD(func2) (THIS_) PURE;
};
class Dllclass:public IDllClass
{
private:
DWORD m_RefCount;
public:
//Constructor
Dllclass():m_RefCount(0){}
//IDllClass methods
STDMETHODIMP func1(void);
STDMETHODIMP func2(void);
//IUnknown Methods
STDMETHODIMP_(ULONG) AddRef();
STDMETHODIMP_(ULONG) Release();
STDMETHODIMP QueryInterface(REFIID riid,void** ppvObject);
};STDMETHODIMP_(ULONG) Dllclass::AddRef()
{
return ++m_RefCount;
}
STDMETHODIMP_(ULONG) Dllclass::Release()
{
DWORD dwRefCount=--m_RefCount;
if(!m_RefCount)
delete this;
return dwRefCount;}
STDMETHODIMP Dllclass::QueryInterface(REFIID riid,void** ppvObject)
{
HRESULT hRet=E_NOINTERFACE;
LPVOID pvObject=NULL;
if(riid==IID_IUnknown)
{
pvObject=reinterpret_cast<IUnknown*>(this);
}
if(riid==IID_IDllClass)
{
pvObject=reinterpret_cast<IUnknown*>(this);
}
if(pvObject)
hRet=S_OK;
*ppvObject=pvObject;
return hRet;
}
STDMETHODIMP Dllclass::func1(void)
{
return S_OK;
};
STDMETHODIMP Dllclass::func2(void)
{
return S_OK;
};在Delphi中的定义:
IDllClass=interface
['{0505DD1E-63A9-4c74-BFEE-3EF34088B4E3}']
function func1:HRESULT;
function func2:HRESULT;
end;
然后你通过导出函数将这个类的接口实例传递给Delphi的程序,就可以在Delphi中使用了。
使用DLL引出的C++类也有同样的要求Delphi 7中依然如此吗????
在主控程序中引用定义接口的单元dcu文件,利用导出的全局类厂函数创建一个对象并用接口即可操作你的导出类了。
缺点是你创建的类实例是通过类厂生成在dll的内存空间而不能在主控程序中生成类实例