我们有一个成熟的C++ COM代码库,已经建立,注册并运行了很多年。这包括许多开发人员机器和自动构建机器。为什么我的DLL中的类型库损坏(注册返回TYPE_E_CANTLOADLIBRARY)?
代码库建立了几个dll和exes。其中一些是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时也出现同样的错误。
我在寻找任何可能有所帮助的建议或类似经历?
我认为我们看到了同样的事情,但我们从未想出解决方案。我们的构建大部分时间都在工作,但有时候会以这种方式失败。这可能是一个路径长度问题,谢谢你的除草。 – 2010-01-12 06:34:05