我用D6编写的4个英文软件能够正常运行于中文WIN98,NT,WIN2000,XP下,但是我将这四个软件在英文WIN98下安装时并运行时,弹出两个出错对话框: 1。Error Starting Program: The MP3PLAYER.EXE file is linked to missing export OLEAUT32.DLL:VarNot. 2.Error: Unable to execute file:
         C:\Program Files\Mp3Player\Mp3player.exe
         CreateProcess failed;code31.
         A device attached to the system is not functioning.很奇怪啊,我在我的软件中没有用任何的数据库控件,我在运行出错的英文98系统上安装ADO2.1包后,我的全部软件都能在英文98下运行了,我查了一下,在出错前,系统SYSTEM目录下的oleaut32.dll是2.20版本的,但我安装ADO后,该oleaut32.dll的版本变为2.40。
 
  难道D6编写的软件都要ADO2.1以上版本的包支持才能运行吗?请知道问题的高手能出来讲讲,我该如何做,难道要我将整个的ADO包同我的软件一起做成安装包吗? 这样不是软件安装包的体积变大好几倍?请告诉详细的解决方法。

解决方案 »

  1.   

    如果你安装的ADO是中文版 的话,就有可能出冲突了!
      

  2.   

    to Drate(鸟窝里的虫):
       能不能讲详细点,我安装的是英文版的ADO包啊,为何用D6写的程序要ADO包支持啊,我以前用D5写的程序可没有这样的问题。是D6的问题吗?
      

  3.   

    如果你确信在程序中没有任何源代码涉数据库和ADO,那么你可以搜索工程中的所有源代码,在uses子句中查找DB和ADODB等与数据库和ADO相关的单元名,把它们从uses子句中删除即可。出现这种情况的原因是,Delphi会根据你使用的组件自动在uses单元中增加相关的单元名,而当你清除组件时,Delphi却不会自动检查是否需要从uses子句中去掉多余的单元名。你可以测试一下,新建一个应用程序,向Form1中放置一个ADOConnection,然后保存,检查uses子句,会发现增加了DB和ADODB两个单元(Delphi6中是这样的),而你把ADOConnection组件删除,再保存,uses子句中的两个单元名还存在。那么编译和建立应用程序时,DB和ADODB也被连接到应用程序中,尽管它们是无用的。因此,用Delphi进行可视化设计时,选取组件需要认真,看上去选错了删了再重选并不影响功能的实现,但却可能为最终的可执行文件带来沉重的包袱。
    可能还不能解决你的问题,但希望上面的阐述对你有所帮助。
      

  4.   

    to cnsuyong(小可) :哪怕我只将一个简单的FORM编译成一个EXE后,到英文版98下都提示
    出错:
    unit Unit1;interfaceuses
     Forms; type
      TForm1 = class(TForm)
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}end.难道D6编写的程序都要oleaut32.dll2.40以上版本的支持吗?