我需要我的库的对象,特别是作为属性,因为我需要在我的方法中。
如果我将其声明为局部变量,则可以正常工作:
#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
}
我是否必须投射它或类似的东西?
答案 0 :(得分:1)
除了已接受的答案,这是我的解决方案:
CComPtr<RobstepRemoteLibraryCSharp::IRobstep> interf;
interf.CoCreateInstance(__uuidof(RobstepRemoteLibraryCSharp::Robstep));