c++ 调用 c#com 函数参数 为类

小坤 2014-05-08 09:43:55
c#写的com组件,其中接口函数中的参数为 为com中的一个类,在c++使用此com组件,参数如何处理。
[Guid("C7C0173F-DFF3-46A9-B951-1EB95C6DA235")]
public interface OperateDBInterface
{
bool Add_MeterInfo(Table_MeterInfo MeterInfo);
}


public class Table_MeterInfo:MeterInfo
{...}




现在需要在c++ 中给Table_MeterInfo类的实体赋相应的值,然后调用Add_MeterInfo()。
OperateDB_InterFace::OperateDBInterfacePtr m_pDBoperate;
OperateDB_InterFace::MeterInfoPtr m_table;

HRESULT hRes =
m_pDBoperate.CreateInstance(__uuidof(OperateDB_InterFace::AddDataInterFace));
if (hRes == S_OK)
{
m_table.CreateInstance(__uuidof(OperateDB_InterFace::Table_MeterInfo));
m_table->Meter_ID = _T("123");
m_pDBoperate->Add_MeterInfo(m_table);

}


在使用m_pDBoperate->Add_MeterInfo(m_table); 时参数不对。
...全文
249 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
小坤 2014-08-03
  • 打赏
  • 举报
回复
就这样吧,还是没有很好的解决
小坤 2014-05-08
  • 打赏
  • 举报
回复
Table_MeterInfo:MeterInfo 也是com中的类,我需要在c++中使用,给他的成员赋值,然后作为Add_MeterInfo(Table_MeterInfo MeterInfo);中参数。 使用智能指针调用com,但是在编译时出错了 Error 1 error C2664: 'OperateDB_InterFace::OperateDBInterface::Add_MeterInfo' : cannot convert parameter 1 from 'OperateDB_InterFace::MeterInfoPtr' to 'OperateDB_InterFace::_Table_MeterInfo *'
  • 打赏
  • 举报
回复
也应该为COM类啊
lis2012 2014-05-08
  • 打赏
  • 举报
回复
public interface OperateDBInterface { bool Add_MeterInfo(Table_MeterInfo MeterInfo); } 楼主你在接口里面定义函数的时候,为什么会使用其培生类做参数呢,我觉得你应该使用OperateDBInterface这个类,然后再其派生类中进行转换,然后再做运算什么的 楼主可以将m_table qi成MeterInfoPt类型再调用 还有一点不明白AddDataInterFace这个clsid是不是也是其派生出来的实现类
小坤 2014-05-08
  • 打赏
  • 举报
回复
引用 3 楼 akirya 的回复:
[quote=引用 2 楼 killkun 的回复:] Table_MeterInfo:MeterInfo 也是com中的类,我需要在c++中使用,给他的成员赋值,然后作为Add_MeterInfo(Table_MeterInfo MeterInfo);中参数。 使用智能指针调用com,但是在编译时出错了 Error 1 error C2664: 'OperateDB_InterFace::OperateDBInterface::Add_MeterInfo' : cannot convert parameter 1 from 'OperateDB_InterFace::MeterInfoPtr' to 'OperateDB_InterFace::_Table_MeterInfo *'
名字改了呗,用MeterInfoPtr[/quote] 这个MeterInfoPtr 是智能指针标志,有c++编译器自动加上的。
  • 打赏
  • 举报
回复
引用 2 楼 killkun 的回复:
Table_MeterInfo:MeterInfo 也是com中的类,我需要在c++中使用,给他的成员赋值,然后作为Add_MeterInfo(Table_MeterInfo MeterInfo);中参数。 使用智能指针调用com,但是在编译时出错了 Error 1 error C2664: 'OperateDB_InterFace::OperateDBInterface::Add_MeterInfo' : cannot convert parameter 1 from 'OperateDB_InterFace::MeterInfoPtr' to 'OperateDB_InterFace::_Table_MeterInfo *'
名字改了呗,用MeterInfoPtr

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧