我开发了一个应用程序,里面没有涉及到数据库,但是调用了别人的 dll组件,结果放到别的机器上不能正常运行,即界面可以出来,但是里面使用的vcl不能出来,报地址访问错误。我在那台机上装了delphi即可正常运行,然后卸载delphi,也可正常运行,我现在要发布这个程序,如何找到这个依赖的文件或设置?谢谢大家

解决方案 »

  1.   

    提示看看那个Dll是不是要注册?project->options->packages里面那个Build with runtime packages 不要选
      

  2.   

    怀疑是DLL需要注册,看看是不是用了什么控件,然后注册DLL尝试下
      

  3.   

    应该是你所带的DLL文件不全,或是在delphi里有ini文件没有带上,看你错误提示什么就找什么原因
      

  4.   

    第三方的dll肯定是先注册了的,project->options->packages里面那个Build with runtime packages 也没选。现在的问题是有的机器正常可用,有的就出现这种问题,不知道是怎么回事
      

  5.   

    那估计就是Delphi自带的什么东西,问一句,当初编译时用的是build吧?
      

  6.   

    http://blog.csdn.net/SmallHand/archive/2009/03/19/4004111.aspx
      

  7.   

    dll是不是用VC开发的,并用到了MFC或者其他的什么库文件,加进来!
    比如有的机器就要运行一下vcredist_x86.exe
      

  8.   

    那个dll可能用到了什么,你没考过去。
      

  9.   

    是别人的dll组件没有显示出来么?你看看是不是环境变量的问题,那个dll文件的注册过程有没有设计到这一方面
      

  10.   

    lz要仔细看看是不是调用了别的程序开发的DLL文件。
      

  11.   

    补充:我导入的这个dll它封装了一个java应用程序的接口,使得我在delphi应用中可以嵌入这个应用程序,并调用里面的功能接口进行相关操作。  在每台测试机上我都预先安装java应用程序并注册这个接口dll,然后发现有的机器正常运行,有的机器运行报错,但基本的form还是可以出来,只是不能嵌入这个java程序窗口。  我采用Process Monitor 2.6进行检测和对比,发现异常运行的机器和正常运行的机器里所用到的dll文件都有,所以我估计是不是什么配置方面(注册表某项配置)有问题,还请大家帮忙
      

  12.   

    我调用的dll是comBridge.dll 运行报错: Access violation at address 03cf4348 in moudule 'comBridge.dll'. Read of address 00000020.
      

  13.   

    肯定少东西了,用installshield扫描一下程序或所调用的DLL的依赖文件
      

  14.   

    to liangyong007a: installshield有这个功能么?是哪个版本?
      

  15.   

    http://blog.csdn.net/SmallHand/archive/2009/03/19/4004111.aspx
    你没看吗?
      

  16.   

    to SmallHand: 
    我看了 http://blog.csdn.net/SmallHand/archive/2009/03/19/4004111.aspx
    我编译时并没有勾选那个选项,你的意思是不是让我通过installshield来扫描需要的依赖文件?
      

  17.   

    问题已解决。原来是这个java应用程序安装后需要重启。谢谢大家!