c++ - 为什么我的 dll 中的类型库损坏(注册返回 TYPE_E_CANTLOADLIBRARY)?

标签 c++ visual-studio com typelib

我们有一个成熟的 c++ COM 代码库,已经构建、注册和运行多年。这包括大量开发机器和自动构建机器。

代码库构建了几个 dll 和 exe。其中一些是 COM 服务器。

典型的设置是 Xp64,同时使用 visual studio 2005 和 2008。

我们有 32 位和 64 位版本。

我们的 xp64 2005 autobuild 机器突然出现故障。 唯一的代码更改是 C++ 帮助程序方法中的一个小更改以及对某些版本号的更新。

我们看到的失败是无法注册 dll 的 x64 发布版本。

失败似乎是由损坏的 dll 引起的。 dll 构建成功,但尝试注册它失败,类型为 TYPE_E_CANTLOADLIBRARY。

dll 应该内置类型库(通过 rc 文件中的包含)。

这以前一直有效,现在仍然适用于我们的其他机器,xp64 VS 2005 和 2008。

当检查损坏的 dll 的二进制文件时,可以看到类型库 idl 源 - 尽管它与未损坏版本的 dll 位于不同的位置。

损坏的 dll 无法在我们的其他机器上注册 - 相同的机器成功注册了相同 dll 的本地构建。

Oleview 在打开 dll 时也失败并出现同样的错误。

我正在寻找任何可能有帮助的建议或类似经验?

最佳答案

这可能就像构建服务器上的磁盘坏了一样简单。您的帖子中没有任何内容可以说明更复杂的事情。虽然在 DLL 中看到 IDL 很奇怪,但类型库是二进制的。

关于c++ - 为什么我的 dll 中的类型库损坏(注册返回 TYPE_E_CANTLOADLIBRARY)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2027472/

相关文章:

c++ - 定义多个名称相同但类型不同的函数对 C++ 编译器的性能有何影响?

c++ - C++ 中的稀疏图实现和性能

c++ - 选择、std::cin 和 std::getline 不能一起玩

c++ - pthread_tryjoin_np?有它的 Windows 版本吗?

.net - 如何-> Visual Studio加载项管理器

delphi - 如何在 COM 服务器中引发异常?

windows - 如何在 Zoom Text 和 Windows 之间插入我的代码?

c++ - Visual Studio 调试监视中的不同_fileName 值

javascript - Visual Studio 中用于 Ajax 和 JavaScript 库的 IntelliSense

api - MS Word 2000 的 ColdFusion COM 对象操作在 100 秒后终止