作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想做的是将在服务器端创建的对象传输到客户端。当我在服务器端和客户端使用 C++ 时,我已经让它工作得很好,但是我没有让我的服务器与其他语言(如 .Net)一起工作,它可能不喜欢这些指针!
这个服务器端代码看起来正确吗?
服务器表单:.h
class TForm2 : public TForm
{
__published: // IDE-managed Components
TMemo *Memo1;
private: // User declarations
DummyComObj* formDummy;
public: // User declarations
__fastcall TForm2(TComponent* Owner);
IDummyComObj* Getformdummy();
};
.cpp
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
CoCreateInstance( CLSID_DummyComObj,NULL,CLSCTX_ALL,IID_IDummyComObj,(void**)&formDummy);
}
DummyComObj* TForm2::Getformdummy()
{
return formDummy;
}
服务器 TestComServerImpl:.cpp
STDMETHODIMP STDMETHODCALLTYPE TServerDidleComTestImpl::GetMyObject(IDummyComObj** outObj)
{
DummyComObj *myDum = Form2->Getformdummy();
*outObj = &myDum;
return S_OK;
}
最佳答案
除了 TServerDidleComTestImpl::GetMyObject() 由于您的原因没有编译试图将 DummyComObj ** 分配给 DummyComObj*,但你也是完全忽略 COM 引用计数规则。
试试这个:
服务器形式:.h
#include <utilcls.h>
class TForm2 : public TForm
{
__published: // IDE-managed Components
TMemo *Memo1;
private: // User declarations
TComInterface<IDummyComObj> formDummy;
public: // User declarations
__fastcall TForm2(TComponent* Owner);
void Getformdummy(IDummyComObj** outObj);
};
服务器形式:.cpp
__fastcall TForm2::TForm2(TComponent* Owner)
: TForm(Owner)
{
CoCreateInstance(
CLSID_DummyComObj,NULL,CLSCTX_ALL,IID_IDummyComObj,(void**)&formDummy);
}
HRESULT TForm2::Getformdummy(DummyComObj** outObj)
{
return formDummy->QueryInterface(IID_IDummyComObj,(void**)outObj);
}
服务器 TestComServerImpl: .cpp
STDMETHODIMP STDMETHODCALLTYPE
TServerDidleComTestImpl::GetMyObject(IDummyComObj** outObj)
{
return Form2->Getformdummy(outObj);
}
关于c++ - 应返回 ComObject 的 ComServer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2199951/
我是一名优秀的程序员,十分优秀!