COM msado15.dll 程序已停止运行

Posted

技术标签:

【中文标题】COM msado15.dll 程序已停止运行【英文标题】:COM msado15.dll Program has stopped running 【发布时间】:2012-10-21 14:57:34 【问题描述】:

我们一直在我们的程序中使用旧的 msado15.dll。我们曾经导入它 #import "msado15.dll" 。现在就在几天前,我们升级到了 Windows 8。唉,我们的软件停止在没有安装 Service Pack 1 的 Windows 7 上运行。 早些时候,当我们使用 Windows 7 时,我们已经升级到 Service Pack 1,并且发生了同样的问题,因此我们从所有机器上卸载了 Windows 7 的 Service Pack 1,一切正常。

但对于 Windows 8,我想他们已经更改了 msado15.dll。 我在网上做了一些研究,他们说我们应该用 msado60.tlb 替换导入,但这也不适用于我们的编译中断。

这就是我们过去在 C++ 环境中的引用方式

import "c:\program Files\Common Files\system\ado\msado15.dll" rename_namespace("ADOCG") rename("EOF","EndofFile") 

我已经改成

import "c:\program Files\Common Files\system\ado\msado28.tlb" rename_namespace("ADOCG") rename("EOF","EndofFile")

&也试过了

import "c:\program Files\Common Files\system\ado\msado60.tlb" rename_namespace("ADOCG") rename("EOF","EndofFile")

正如 Microsoft Link 所建议的那样。但它仍然不能在没有安装 Service Pack 1 的 XP 机器和 Windows 7 机器上工作。

任何人都可以建议我们可以遵循的正确步骤,以便让我们的程序在没有 Service Pack 1 的 Windows 7 以及 Windows 8 上运行。

已经被这个问题困扰了几天了。帮助将不胜感激。

问候, 索拉布

【问题讨论】:

我处理这个@工作的方式有点奇怪,但它确实有效。我从旧的 VS2008/Win7 机器上的废品项目中获取了 msado15.dll 生成的 tli 和 tlh 文件,然后完全丢弃了导入语句。 stdafx.h 标头包含 tlh,stdafx.cpp 被拉入 tli。每次完整构建时一遍又一遍地导入相同的 .dll 对我来说毫无意义。事实证明,它还解决了许多其他问题。不知道它是否对你有用,但见鬼,你可能已经尝试过奇怪的事情了。 非常感谢,这真的很有帮助。我们所做的与您建议的解决方案相似。我们采用了以前的 msaso15.dll,即没有 sp1 版本的 Windows 7 并将其导入。问题消失了。我认为这意味着我们仍在使用旧的 msado15.dll。但只要它有效,我们就很高兴。再次感谢。 您可能没有使用 DLL(本身)。您正在使用在 DLL 的类型库中定义的接口和 CLSID。 CoCreateInstance() 时使用的实际运行时要么由您通过可再分发的 MSI 安装,要么已经存在于系统上。我只是承担了中间人并生成了一次 TLH/TLI 文件,然后完全放弃了整个导入机制,并将 TLH/TLI 文件直接检查到项目的源代码库中。 你知道了.. 非常感谢.. :-) 你的建议真的很有帮助.. 很遗憾,他们阻止您将 dll 与 .exe 并排发送,并且它“正常工作”,尤其是 vs 运行时 - 这样做完全可以解决此类问题,因为您总是使用您测试的版本,并且不依赖于来自系统的版本。在 ms 尝试为其他程序员修复它之前,我从来没有遇到过 dll 地狱……所有修复中最糟糕的是,由于硬盘空间充足,问题已经过时。 【参考方案1】:

根据 Saurabh 的评论已解决:

我们所做的与您建议的解决方案类似。我们采取了 以前的msaso15.dll即Windows 7无sp1版本并导入 那。问题消失了。我认为这意味着我们仍在使用 旧的 msado15.dll。但只要它有效,我们就很高兴。

【讨论】:

以上是关于COM msado15.dll 程序已停止运行的主要内容,如果未能解决你的问题,请参考以下文章

ADO连接数据库msado15.dll

我用VS2010的C++导入ADO导入不了,提示无法打开源文件msado15.tlh

MS Access 中的拼写检查 VBA 子程序已停止工作

MFC中怎么连接SQL数据库

VC6.0中用ado连接数据库出错

MFC中如何连接access数据库?