C#中怎么使用C++写的COM组件

似水流年__ 2010-05-24 05:22:14
我用C++写了一个COM组件 不用说C++中肯定是可以用的
用VBScript JavaScript都可以正常调用

在C#中的时候函数可以调用,但就是没能够成功执行。
我也按照http://www.cppblog.com/mzty/archive/2007/06/04/25522.html上面说过的方法试了
都不行,不知道是否有大哥遇到与小弟相似的情况,还望告知一二

多谢先了
...全文
158 13 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hyblusea 2010-05-26
  • 打赏
  • 举报
回复
C#调用COM,没什么难度, 直接引用, 选择COM标签 ,找到你要引用的COM
似水流年__ 2010-05-25
  • 打赏
  • 举报
回复
问题已经解决了 是因为一个BSTR指向了临时变量的地址
奇怪了在C++ VBS JS却能够成功执行
还有C#没有成功执行要不,就发现不了这个错误了
谢谢大家的支持 结贴
softman11 2010-05-24
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 xhk456 的回复:]
引用 6 楼 softman11 的回复:
引用楼主 xhk456 的回复:
我用C++写了一个COM组件 不用说C++中肯定是可以用的
用VBScript JavaScript都可以正常调用

在C#中的时候函数可以调用,但就是没能够成功执行。
我也按照http://www.cppblog.com/mzty/archive/2007/06/04/25522.html上面说过的方法试了……
[/Quote]

这个就不是调用的问题。这个要检查你COM的实现代码了。
调用的时候,只有你COM里面才知道哪儿出了问题。C#只是传参数进去,然后接收结果。
既然没出现异常,也正确执行了,但是结果不对,那只可能说COM里面出了问题,在COM里面加上调试语句,检查问题所在!

很有可能是参数格式问题导致的,根据我的经验。
似水流年__ 2010-05-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 softman11 的回复:]
引用楼主 xhk456 的回复:
我用C++写了一个COM组件 不用说C++中肯定是可以用的
用VBScript JavaScript都可以正常调用

在C#中的时候函数可以调用,但就是没能够成功执行。
我也按照http://www.cppblog.com/mzty/archive/2007/06/04/25522.html上面说过的方法试了
都不行,不知道是否有大哥遇到与小弟相似的情……
[/Quote]

肯定注册了 我自己用手动用regsvr32注册的
C#里函数都成功调用了,就是没有达到预期的目的
皇城龙三 2010-05-24
  • 打赏
  • 举报
回复
通过Managed C++做了一个Wrapper,这样C#就可以间接调用C++的东西
http://blog.csdn.net/Muf/archive/2006/04/10/656920.aspx

http://www.newbt.net:8080/main/bbs/show.jsp?wb_tag=0&id=4300&page=0

http://www.codeproject.com/KB/mcpp/UxThemeToolPort.aspx

http://hi.baidu.com/char_string/blog/item/cfd0991611c4204621a4e97b.html
似水流年__ 2010-05-24
  • 打赏
  • 举报
回复
没有出错信息的 就是函数没能够达到预期的效果
softman11 2010-05-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 xhk456 的回复:]
我用C++写了一个COM组件 不用说C++中肯定是可以用的
用VBScript JavaScript都可以正常调用

在C#中的时候函数可以调用,但就是没能够成功执行。
我也按照http://www.cppblog.com/mzty/archive/2007/06/04/25522.html上面说过的方法试了
都不行,不知道是否有大哥遇到与小弟相似的情况,还望告知一二

多谢先了
[/Quote]
很简单的,C#先天就支持COM组件!
1。你的组件在系统注册。
既然你VBSCRIPT能调用,那说明已经注册成功。
2。在C#项目组,添加现存项,选择COM标签,找到你已经注册好的COM组件,打上勾,系统会自动加入引用。
系统会自动生成你的COM组件对应的COM类对象和接口。
直接使用COM对象类生成实例,即可调用里面的方法。

mayonglong 2010-05-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 staywithc 的回复:]
在C#中的时候函数可以调用,但就是没能够成功执行。

具体出错信息时什么?

还有你大概把你的调用代码贴一下,这样好分析问题
[/Quote]

贴具体错误信息~
ztenv 2010-05-24
  • 打赏
  • 举报
回复
不止一次做过C#调C++的com,都没有什么太大的困难感觉;
ztenv 2010-05-24
  • 打赏
  • 举报
回复
详细说说你的com的接口及参数类型,是有界面的还是无界面的?
guyehanxinlei 2010-05-24
  • 打赏
  • 举报
回复
Friendly UP!
staywithc 2010-05-24
  • 打赏
  • 举报
回复
在C#中的时候函数可以调用,但就是没能够成功执行。

具体出错信息时什么?

还有你大概把你的调用代码贴一下,这样好分析问题

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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