C ++ COM对象作为属性

时间:2015-04-30 13:39:08

标签: c++ com

我需要我的库的对象,特别是作为属性,因为我需要在我的方法中。

如果我将其声明为局部变量,则可以正常工作:

#import "...\library.tlb"

int _tmain(int argc, _TCHAR* argv[])
{
    CoInitialize(NULL);

    RobstepRemoteLibraryCSharp::IRobstepPtr interf(__uuidof(RobstepRemoteLibraryCSharp::Robstep));

    std::wcout << interf->Test() << std::endl;

    interf->ConnectToPlattform("192.168.0.1");
}

这有效并且完全应该做的事情。但如何获得&#34; interf&#34;变量作为属性?到目前为止,我尝试了不同的东西。

file.h

#import "...\library.tlb"

class robstep
{
public:
    robstep(void);
    ~robstep(void);

private:
    CComPtr interf; //Version 1
    CComObject<RobstepRemoteLibraryCSharp::Robstep>* interf; //Version 2
}

file.cpp

#import "...\library.tlb"

robstep::robstep(void)
{
    CoInitialize(NULL);

    interf.CoCreateInstance(__uuidof(RobstepRemoteLibraryCSharp::Robstep)); //Version 1
    CComObject<RobstepRemoteLibraryCSharp::Robstep>::CreateInstance(&interf); //Version 2

}

我使用了此link和此one

我是否必须投射它或类似的东西?

1 个答案:

答案 0 :(得分:1)

除了已接受的答案,这是我的解决方案:

CComPtr<RobstepRemoteLibraryCSharp::IRobstep> interf;
interf.CoCreateInstance(__uuidof(RobstepRemoteLibraryCSharp::Robstep));