社区
C#
帖子详情
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
打赏
收藏
C#中怎么使用C++写的COM组件
我用C++写了一个COM组件 不用说C++中肯定是可以用的 用VBScript JavaScript都可以正常调用 在C#中的时候函数可以调用,但就是没能够成功执行。 我也按照http://www.cppblog.com/mzty/archive/2007/06/04/25522.html上面说过的方法试了 都不行,不知道是否有大哥遇到与小弟相似的情况,还望告知一二 多谢先了
复制链接
扫一扫
分享
转发到动态
举报
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
打赏
举报
回复
有一些相关文章,给你贴出来参考一下:
http://topic.csdn.net/u/20090430/17/5148f3de-9f7d-45b1-b5ba-2fcaf06baafc.html
http://blog.csdn.net/tangl_99/archive/2006/09/06/1182354.aspx
http://topic.csdn.net/u/20090225/15/a6bc50ad-9721-4749-b189-dc4a4bc045a1.html
http://topic.csdn.net/u/20090525/11/233dea6d-b7fb-478c-a824-651dc185b791.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#中的时候函数可以调用,但就是没能够成功执行。
具体出错信息时什么?
还有你大概把你的调用代码贴一下,这样好分析问题
AutoCAD二次开发文档(
C++
C#
史上最全版本)
目前收集到关于AutoCAD二次开发最全的文档。 也包括张帆 超清晰版PDF可复制代码的文档及源代码 还有.net CAD二次开发
C#
调用
C++
COM
组件
前一阵在工作
中
做项目的时候,遇到了
COM
组件
的调用和
使用
问题,当时研究和好一阵,才把
中
间的环节打通,现在
写
出来为大家提供方便,这里包含了四个类型: 1、在VS2005
中
,
C#
编
写
DLL并
使用
C++
调用 2、在VS2005
中
C#
编
写
的
COM
组件
,
使用
VC6.0调用 3、在VC6.0
中
编
写
COM
组件
,
使用
VS2005
C#
调用 4、在VC6.0
中
编
写
COM
组件
,
使用
VC6.0调
C#
调用
C++
com
组件
程序右键添加引用-选择
com
,找到相应的
组件
。
C#
调用
C++
类(以
COM
组件
的形式)
如果想用
C#
调用C/
C++
写
的函数,可以先将C/
C++
的函数
写
成dll文件,由
C#
用DllImport的方式来调用,但是这种方法无法调用
C++
写
的类,如果想调用
C++
类,可以先把
C++
类封装成
COM
组件
,再由
C#
来调用。方法如下(以VS2008英文版为例说明)一、新建一个Visual
C++
项目,类型为ATL Project,假设项目名为
Com
Project,直接点Finish即可。二、在Solu...
用
C++
写
COM
组件
并用
C#
调用
1、以管理员身份打开vs,特别重要,否则会不成功2、新建一个
c++
ATL项目,如图,全部为默认设置 3、添加一个ATL简单对象,从添加类
中
添加,如图 4、添加一个方法,注意是在类视图
中
添加,并按照下图设置,其余部分均为默认 5、然后在test.cpp文件
中
添加代码,生成。一个
com
组件
就做出来了。STDMETHODIMP Ctest::Add(LONG a, LONG b, LONG
C#
111,098
社区成员
642,554
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章