我们有一个成熟的 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/