none
请教关于OLE调用问题 RRS feed

  • 问题

  • 我在一个基于对话框的MFC程序中,通过OLE方式调用Mapinfo应用程序
    加载了相关的头文件,利用一下语句调用:
    DMapinfo mapinfo;
    mapinfo.CreateDispatch("mapinfo.application");
    然后利用mapinfo进行一些操作,
    我在本机上面编译通过。
    但是把生成的MFC.exe文件拷贝到其他机器,怎么在运行到mapinfo.CreateDispatch("mapinfo.application");这句时,出现错误。

    我对于OLE调用不是很清楚,其他机器上面也装有mapinfo程序的,不知道怎么修改?
    阿荣
    2009年3月10日 8:47

答案

  • 在编译了release版本后,这个问题得以解决。
    但还是有疑问,OLE调用应用程序怎么知道应用程序的路径呢,如果别的机器上面mapinfo安装的路径跟我的机器不一样,这个程序还能正常执行吗?

    阿荣
    • 已标记为答案 arongbaobao 2009年3月10日 10:09
    2009年3月10日 10:09

全部回复

  • 在编译了release版本后,这个问题得以解决。
    但还是有疑问,OLE调用应用程序怎么知道应用程序的路径呢,如果别的机器上面mapinfo安装的路径跟我的机器不一样,这个程序还能正常执行吗?

    阿荣
    • 已标记为答案 arongbaobao 2009年3月10日 10:09
    2009年3月10日 10:09
  • 你需要制作安装程序将你所使用的组件发布到其他计算机。你不能发布的软件,例如mapinfo,需要在运行之前安装到计算机。
    COM组件应该有一个和版本独立的程序ID ,这个ID在注册表中的设置应该重定向到最新版本的程序ID。

    MSMVP VC++
    2009年3月10日 13:35
    版主