以前在XP系统下用Delphi 7开发的软件在win7环境无法运行了

shijies 2020-06-20 11:16:22
不知何故?以前加个壳还被360报错,现在exe也运行不了。
...全文
283 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
tanqth 2020-06-23
  • 打赏
  • 举报
回复
引用 13 楼 shijies 的回复:
请问现在基本使用Delphi的那个版本?如何解决以前的32位dll?是编译成64位的dll,还是生产32位的应用程序?
看错页面了。 现在是Dx10.4,你可以用10.3的版本。你需要64的DLL就编译64位的DLL,也可以使用C#编译32位的,再调用32位的DLL,你怎么方便怎么处理。
tanqth 2020-06-23
  • 打赏
  • 举报
回复
引用 10 楼 shijies 的回复:
我用UltraEdit打开这个dll,看到里面有一段英文:This program must be run under win32 是不是表明这个dll是32位的? 如果重新编译一次,能否将这个dll转变成32位的?
是,32位。重新编译也必须是以64编译才能是64位(新版本的Delphi才可以编译64位)。D7只能编译32位。 奇怪,我之前有一个回复怎么没见了?
shijies 2020-06-23
  • 打赏
  • 举报
回复
请问现在基本使用Delphi的那个版本?如何解决以前的32位dll?是编译成64位的dll,还是生产32位的应用程序?
shijies 2020-06-22
  • 打赏
  • 举报
回复
还有一个问题是:想用现在搞的.net程序调用以前使用Delphi 7做的dll,但是报错,显示:HRESULT:0x8007007E,对异常HRESULT:0x8007007E百度了一下,结果为如下:
问题:找不到指定的模块(Exception from HRESULT:0X8007007E)

问题描述:

这个问题想必大家都碰到过,但始终很难找到解决问题的答案。其实这个问题的描述本来就有些模糊,说是缺少模块了,也就是DLL,但又不具体说明白是哪些DLL,实在让人摸不着脑袋。关于C#调用C\C++编写的DLL,我也为此花费了较多的时间去解决。

其实这个问题虽然报错是一样的,但是具体的问题是不一样,通常会有以下情况会报出这样的错误:

1.C#调用DLL时,你调用了DLL里已经被删除的函数,这个函数可能是你之前写上的,但是你后来已经删除了它。

2.C#调用的DLL,然而这个DLL又调用了其他的DLL,其他DLL与这个DLL没有联系上,尤其出现调用多种DLL就容易出现这个问题。

3.本来C#调用这个DLL是32位的,但是你编译项目时用的是64位的。所以你用64位编译的项目去调用64位DLL,但代码里只设置了调用32位的DLL,这导致调用的路径不对。(抛出异常只会说你找不到指定的模块)

4.也可能是编译时必要的系统DLL,因为有些你自己编写出来的DLL,必须依赖某些系统DLL才能链接起来,因此是系统本身缺少了这些模块。

请教问题可能出在哪里?
tanqth 2020-06-22
  • 打赏
  • 举报
回复
引用 3 楼 shijies 的回复:
数据库连不上了,重新编译?还用D7?
如果只是数据库连接不上,估计是你系统环境的问题,找这个方向应该是可以解决的。
shijies 2020-06-22
  • 打赏
  • 举报
回复
数据库连不上了,重新编译?还用D7?
tanqth 2020-06-22
  • 打赏
  • 举报
回复
引用 11 楼 shijies 的回复:
因为64位的程序无法调用32位的dll
D7的只能编译32位,你可以试试在新版本的DELPHI中编译为64位,也可以试试C#编译为32位。
shijies 2020-06-22
  • 打赏
  • 举报
回复
因为64位的程序无法调用32位的dll
shijies 2020-06-22
  • 打赏
  • 举报
回复
我用UltraEdit打开这个dll,看到里面有一段英文:This program must be run under win32
是不是表明这个dll是32位的?
如果重新编译一次,能否将这个dll转变成32位的?
tanqth 2020-06-22
  • 打赏
  • 举报
回复
引用 8 楼 shijies 的回复:
我C#调用这个DLL与数据库无关,且不涉及参数传递,不知调用这个DLL是不是32位的。
D7 就是32位的呀。
shijies 2020-06-22
  • 打赏
  • 举报
回复
我C#调用这个DLL与数据库无关,且不涉及参数传递,不知调用这个DLL是不是32位的。
武稀松 2020-06-22
  • 打赏
  • 举报
回复
如果是Access数据库的话64BIT的驱动要单独装。
tanqth 2020-06-22
  • 打赏
  • 举报
回复
你最开始只说运行不了,也没说具体报什么错没有。 这里调用DLL出错,就你上面说到的几个问题同个一个去检查。 估计是你DLL里所调用的DLL没有找到。你自己有代码,更好检查,我们就只能去猜。
  • 打赏
  • 举报
回复
估计是运行环境(数据库、ActiveX等等)的问题,D7开发的程序兼容性良好,在win10中运行都没什么问题
xrbaa 2020-06-20
  • 打赏
  • 举报
回复
有源程序的话,重新编译一下就好。
没有源程序的话,那就。。。。。。。。。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧