我用MATLAB2010做了一个COM,在本地机器(装有MATLAB软件和MCR的机器)上用VC++2008测试能用,然后打包MCR发布,包大小为170M。到客户机器上安装MCR,安装后的MCR大小为400M,注册COM组件服务器也成功。在客户机器的VC++2008上测试这个基于COM接口的DLL,结果客户机器虽然可以获得COM的各种接口,但是接口调用的函数返回却都是E_FAIL。后来我发现,在本地机器上,如果把MATLAB软件删了,而只保留MCR,就出现和客户机器一样的问题,反之客户机器装了MATLAB软件就可以用这个组件。请教怎么解决啊?我都已经打了MCR包了!为什么还这样呢?
而且客户的机器上VC++2008跟踪这个COM,发现它已经与MCR中的很多DLL进行连接了,CoCreateInstance结果也是S_OK,就是接口调用的函数返回失败,哪位高人给指条明路啊]

解决方案 »

  1.   

    最好单步调试一下,查看函数COM接口函数调用情况
      

  2.   

    因为这个函数需要MCR的支持,在前面的CoCreateInstance返回的是S_OK。而且我又尝试用这个获得的接口去调用其他额外的接口也都是S_OK。也就是说CoCreateInstance没有问题,而且我通过调试信息发现CoCreateInstance所调用的MCR动态连接库没有异常发生。出问题的地方还是在接口调用的函数上,函数可以运行,但是结果却失败。
    就算单步运行的话,调试信息不会跳转到这个函数的内部调用去,无法得知具体的问题在哪里。也就是说我只能得到这个函数调用的结果是E_FAIL,而无法得知具体什么原因。
      

  3.   

    既然安装matlab就可以,那估计还是可能`缺少什么相关文件
      

  4.   

    呵呵,现已经解决了,我觉得这个问题应该算是MATLAB的一个BUG了。
      

  5.   

    请问楼主你是咋个解决的嘛。??我现在也在弄这个混合编程!!我也是要调用matlab的工具箱函数~~希望你能指点啊~~我的QQ是449046108.你看到了加我行不?(验证就写matlab哈,谢谢啦~~)无限感激你啊,高手
      

  6.   

    楼主,我也在搞这个,我的问题出现在打包中,怎么样在客户机上安装mcr?请加我qq:610512037,谢谢,请帮助我。
      

  7.   

    兄弟,你的问题最终是怎么解决的。我也遇到了一样的问题。
    qq523876920,
    [email protected]