MFC使用ADO连接ACCESS数据后,发布release版本,到XP系统上就连接不上数据库了~怎么回事呢?

hxin11166 2012-04-17 11:37:54
软件开发是在64位WIN7 VS2005下的。做好后发布release版本,在任何WIN7系统下使用都很正常。
但是在XP系统下,打开后会提示:“无效指针”(在读取数据库里设置了try。catch(_com_error e))
然后软件可以打开,但是和数据库有关的东西,都是空白的。
关闭掉程序时又会提示:应用程序发生异常 unknown software exception(0x400000015),位置为0x0044c47f。
发布release版本时仅仅在设置里修改了“在静态库中使用MFC”
不知道是不是发布release的方法不对呢?程序应该没问题,在WIN7下一切正常。。

连接数据库的指令如下:
hr = m_pConnection->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=../sigansystem/Cypos.mdb;","","",adModeUnknown);
可以确定在WIN7下成功连接上了。。。

恳请高手帮帮忙哈~~~~
...全文
1052 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
plaingenius 2014-12-04
  • 打赏
  • 举报
回复
引用 19 楼 vvqboy 的回复:
[quote=引用 10 楼 hxin11166 的回复:] [Quote=引用 7 楼 的回复:] 是不是应该带上MSADO15.dll [/Quote] 搞定~可以在XP下运行了。但是我解决方案里有2个项目,第一个项目可以在XP运行,第二个项目是依赖第一个项目生成的,,在XP下如果数据库存在的话打开后无任何反应,在数据库不存在时打开,会提示连接出错。。请问是怎么回事呢。。。
怎么搞定的,把MSADO15.dll和exe文件放在一个文件夹下面么[/quote] 不用,直接用xp的ado替换win7的ado,重新编译下就行了,但是要注意不同xp版本下的ado可能不兼容,你编出来的exe不一定能在所有的xp下正常连接
vvqboy 2014-08-01
  • 打赏
  • 举报
回复
引用 10 楼 hxin11166 的回复:
[Quote=引用 7 楼 的回复:] 是不是应该带上MSADO15.dll [/Quote] 搞定~可以在XP下运行了。但是我解决方案里有2个项目,第一个项目可以在XP运行,第二个项目是依赖第一个项目生成的,,在XP下如果数据库存在的话打开后无任何反应,在数据库不存在时打开,会提示连接出错。。请问是怎么回事呢。。。
怎么搞定的,把MSADO15.dll和exe文件放在一个文件夹下面么
曾经一片 2012-09-11
  • 打赏
  • 举报
回复
在WIN7,用的是msado15.dll,XP用的是msado14.dll,还是在XP下改成msado14.dll然后编译一下吧,这样在WIN7上也能用,我也是遇到同样的问题。
hxin11166 2012-05-14
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]
修改初始化函数的调用位置试试吧
我也遇到过这问题
那个函数叫什么 InitCom....
[/Quote]
是WIN7的ADO库太新了以至于XP支持不了的原因。
smilenot 2012-05-13
  • 打赏
  • 举报
回复
修改初始化函数的调用位置试试吧
我也遇到过这问题
那个函数叫什么 InitCom....
yjfme 2012-05-11
  • 打赏
  • 举报
回复
把WIN7下的这个文件msado15.dll注册到XP下?
hxin11166 2012-04-19
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]
朋友!您好!

您问过一个问题关于怎样让自己VC++6.0数据库软件在XP下运行,您是怎么做到的?我现在也遇到这个问题,我的在有些win7下也是不能运行的,更就别提XP了,请问,您是怎么弄的?

期待您的回复!谢谢!
[/Quote]
http://hi.baidu.com/hxin1116/blog/item/69482708f6d63110e8248813.html
这个哈
bulaidelei110 2012-04-18
  • 打赏
  • 举报
回复
朋友!您好!

您问过一个问题关于怎样让自己VC++6.0数据库软件在XP下运行,您是怎么做到的?我现在也遇到这个问题,我的在有些win7下也是不能运行的,更就别提XP了,请问,您是怎么弄的?

期待您的回复!谢谢!

hxin11166 2012-04-18
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]
引用 10 楼 的回复:

引用 7 楼 的回复:
是不是应该带上MSADO15.dll

搞定~可以在XP下运行了。但是我解决方案里有2个项目,第一个项目可以在XP运行,第二个项目是依赖第一个项目生成的,,在XP下如果数据库存在的话打开后无任何反应,在数据库不存在时打开,会提示连接出错。。请问是怎么回事呢。。。
应该是你在打开数据库的时候没做容错判断
[/Quote]

有做的,就是奇怪有些XP不能用,有些很正常。
zyq5945 2012-04-17
  • 打赏
  • 举报
回复
WIN7的ADO版本比XP的版本高,在高版本编译在低版本运行不了(主要COM的Guid变了)。只能反过来在XP上编译,在WIN7上可以运行。
hxin11166 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
是不是XP下没有Provider=Microsoft.Jet.OLEDB.4.0;这个驱动。
[/Quote]
可能是这个原因,但是老师发给我的一个release的,可以打开也可以使用啊。。。
而我自己发布的就正常打开了。。。
csl312211865 2012-04-17
  • 打赏
  • 举报
回复
是不是XP下没有Provider=Microsoft.Jet.OLEDB.4.0;这个驱动。
向立天 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]

引用 7 楼 的回复:
是不是应该带上MSADO15.dll

搞定~可以在XP下运行了。但是我解决方案里有2个项目,第一个项目可以在XP运行,第二个项目是依赖第一个项目生成的,,在XP下如果数据库存在的话打开后无任何反应,在数据库不存在时打开,会提示连接出错。。请问是怎么回事呢。。。
[/Quote]应该是你在打开数据库的时候没做容错判断
hxin11166 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
是不是应该带上MSADO15.dll
[/Quote]
搞定~可以在XP下运行了。但是我解决方案里有2个项目,第一个项目可以在XP运行,第二个项目是依赖第一个项目生成的,,在XP下如果数据库存在的话打开后无任何反应,在数据库不存在时打开,会提示连接出错。。请问是怎么回事呢。。。
hxin11166 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
可能是他把WIN7的ADO换成了XP的。
用RegSvr32注册COM组件。
[/Quote]
我用REGsvr32注册tlb文件,命令如下:
regsvr32 "%windir%\Microsoft.NET\Framework\v4.0.30319\regtlibv12.exe" "%commonprogramfiles%\system\ado\msado60_Backcompat_ia64.tlb"
执行完后提示:
模块"c:\windowsMicrosoft.NET\Framework\v4.0.30319\regtlibv12.exe“已加载,但找不到入口点DLLREGISTERSERVER,请确保”c:\windowsMicrosoft.NET\Framework\v4.0.30319\regtlibv12.exe“为有效的DLL或OCX文件,然后重试。
然后点击确定,继续报错,
模块“c:\....\common\programfiles\system\ado\msado60_Backcompat_ia64.tlb"可能与您正在运行的Windows版本不兼容。检查该模块是否与regsvr32.exe的x86(32位)或X64(64位)版本兼容
zyq5945 2012-04-17
  • 打赏
  • 举报
回复
可能是他把WIN7的ADO换成了XP的。
用RegSvr32注册COM组件。
向立天 2012-04-17
  • 打赏
  • 举报
回复
是不是应该带上MSADO15.dll
hxin11166 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
WIN7的ADO版本比XP的版本高,在高版本编译在低版本运行不了(主要COM的Guid变了)。只能反过来在XP上编译,在WIN7上可以运行。
[/Quote]
3.注册下载的文件系统上。例如:
"%commonprogramfiles%\system\ado\msado60_backcompat.tlb"%windir%\Microsoft.NET\Framework\v4.0.30319\regtlibv12

注意 如果调整为 regtlbv12.exe 的路径。NET 框架 4.0 的系统上未安装。
这里提示要注册~不知道怎么注册。。。
hxin11166 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
引用 3 楼 的回复:
WIN7的ADO版本比XP的版本高,在高版本编译在低版本运行不了(主要COM的Guid变了)。只能反过来在XP上编译,在WIN7上可以运行。

正在下载VS2005,打算在XP上测试一下。但是为什么老师也是用WIN7的编出来的可以呢?
老师发给我的exe文件体积好大。。。至少是我的3倍...
[/Quote]

http://support.microsoft.com/kb/2517589
刚找到这个,很可能是这个问题~正在测试中。。
hxin11166 2012-04-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
WIN7的ADO版本比XP的版本高,在高版本编译在低版本运行不了(主要COM的Guid变了)。只能反过来在XP上编译,在WIN7上可以运行。
[/Quote]
正在下载VS2005,打算在XP上测试一下。但是为什么老师也是用WIN7的编出来的可以呢?
老师发给我的exe文件体积好大。。。至少是我的3倍...

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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