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

解决方案 »

  1.   

    详细说说你的com的接口及参数类型,是有界面的还是无界面的?
      

  2.   

    不止一次做过C#调C++的com,都没有什么太大的困难感觉;
      

  3.   

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

  4.   

    有一些相关文章,给你贴出来参考一下:http://topic.csdn.net/u/20090430/17/5148f3de-9f7d-45b1-b5ba-2fcaf06baafc.htmlhttp://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
      

  5.   

    通过Managed C++做了一个Wrapper,这样C#就可以间接调用C++的东西
    http://blog.csdn.net/Muf/archive/2006/04/10/656920.aspxhttp://www.newbt.net:8080/main/bbs/show.jsp?wb_tag=0&id=4300&page=0http://www.codeproject.com/KB/mcpp/UxThemeToolPort.aspxhttp://hi.baidu.com/char_string/blog/item/cfd0991611c4204621a4e97b.html 
      

  6.   


    肯定注册了 我自己用手动用regsvr32注册的
    C#里函数都成功调用了,就是没有达到预期的目的
      

  7.   


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

  8.   

    问题已经解决了 是因为一个BSTR指向了临时变量的地址
    奇怪了在C++ VBS JS却能够成功执行
    还有C#没有成功执行要不,就发现不了这个错误了
    谢谢大家的支持 结贴
      

  9.   

    C#调用COM,没什么难度, 直接引用, 选择COM标签 ,找到你要引用的COM