是不是matlab做的com还是需要matlab的支持?

解决方案 »

  1.   

    不需要的,COM组件按理说是独立于机子本身的,现在发现在我自己机子上只要注册COM组件生成的dll文件,就可以运行了,但是到别人的机子上又不行了,不知道为什么
      

  2.   

    打包完整了吗?多尝试下,看不可以的电脑上缺少什么文件,再打包补上。net framework?都包含上去了吗/
      

  3.   

    dll在出错的机器上注册过了吗?
    出错的原因是什么?hr这个返回值是什么?
      

  4.   

    今天到实验室我试了一下,在几台win7系统(不管32位还是64位),只要安装了MCR(runtime)7.17,都能注册成功且release版本可正常运行。但是在XP系统上只能注册成功,但是(创建对象依然失败,即使runtime的dll全复制到release目录下也一样创建对象失败)。所以我觉得可能和系统也是有关系的,如果电脑是win7系统的话,估计问题不大;如果是XP系统的话,可能和我今天试的情况一样——注册成功但是程序不能正常运行
      

  5.   

    今天到实验室我试了一下,在几台win7系统(不管32位还是64位),只要安装了MCR(runtime)7.17,都能注册成功且release版本可正常运行。但是在XP系统上只能注册成功,但是(创建对象依然失败,即使runtime的dll全复制到release目录下也一样创建对象失败)。所以我觉得可能和系统也是有关系的,如果电脑是win7系统的话,估计问题不大;如果是XP系统的话,可能和我今天试的情况一样——注册成功但是程序不能正常运行
      

  6.   

    COM组件的接口函数用HRESULT来向客户端报告执行情况,HRESULT不同于布尔值,一般不能采用直接比较的方法来判断某个函数是否成功执行。在COM中,采用SUCCEEDED和FAILED宏来判断函数是否成功执行。如:HRESULT hr;   hr=IMyInterface->MyFun(...);  if(FAILED(hr))  {return;}
      

  7.   

    Quote: 引用 7 楼 u010439455 的回复:

    Quote:
    不是,我是说看一看失败时hr这个返回值具体是什么?
    比如没有初始化COM库、找不到ProID什么的、COM未注册,通过这个返回值可以得到一些失败的原因信息。
      

  8.   

    再 网查  下 ,看 打包时 ,win7和xp有什么需要区别对待的地方 。
      

  9.   

    我今天又看到另一个帖子说了类似的情况,连接如下:http://www.verydemo.com/demo_c290_i11117.html,说是如果把matlab整个卸载的话,也许就不行了,我回去把一台机子的matlab完全卸载看看情况如何
      

  10.   

    我今天又看到另一个帖子说了类似的情况,连接如下:http://www.verydemo.com/demo_c290_i11117.html,说是如果把matlab整个卸载的话,也许就不行了,我回去把一台机子的matlab完全卸载看看情况如何
    看来不是系统的问题,将我其中一台电脑的matlab全卸载后,发现即使装了MCR7.17,dll注册成功,但是用VC调用时依然会出现创建COM对象的实例失败的问题。现在问题又回归原点了。唉!
      

  11.   

    版主果然强大,看来matlab做的COM组件的确还是需要matlab支持的,因为我将其中一台电脑的matlab全卸载后,发现即使装了MCR7.17,dll注册成功,但是用VC调用时依然会出现创建COM对象的实例失败的问题。现在问题又回归原点了。唉!看来只能换方法了
      

  12.   

    你编译时采用的编译器是VC2012或者VC2013吗?默认情况应该只有VC2010编译的程序才能在WinXP下运行,因为新版本的编译器默认生成的程序不能再winxp下运行
      

  13.   

    参考一下这个
    http://wenku.baidu.com/view/ccbafd5383c4bb4cf7ecd171.html