导入的类型库不再有效

时间:2012-02-09 12:26:26

标签: c++builder c++builder-2010 typelib c++builder-xe2

我在C ++ Builder中有一个大项目似乎使用了导入类型库这个函数。它是一个带有像这样的标题的文件

// ************************************************************************ //
// WARNING                                                                    
// -------                                                                    
// The types declared in this file were generated from data read from a       
// Type Library. If this type library is explicitly or indirectly (via        
// another type library referring to this type library) re-imported, or the   
// 'Refresh' command of the Type Library Editor activated while editing the   
// Type Library, the contents of this file will be regenerated and all        
// manual modifications will be lost.                                         
// ************************************************************************ //

// C++ TLBWRTR : $Revision:   1.134.1.41  $
// File generated on 2003-10-27 12:57:05 from Type Library described below.

// ************************************************************************ //
// Type Lib: C:\WINNT\system32\MQOA.DLL (1)
// IID\LCID: {D7D6E071-DCCD-11D0-AA4B-0060970DEBAE}\0
// Helpfile: 
// DepndLst: 
//   (1) v2.0 stdole, (C:\WINNT\System32\stdole2.tlb)
//   (2) v4.0 StdVCL, (C:\WINNT\System32\STDVCL40.DLL)
// ************************************************************************ //
#ifndef   __MSMQ_OCX_h__
#define   __MSMQ_OCX_h__

#pragma option push -b -w-inl

#include <utilcls.h>
#if !defined(__UTILCLS_H_VERSION) || (__UTILCLS_H_VERSION < 0x0500)
//
// The code generated by the TLIBIMP utility or the Import|TypeLibrary 
// and Import|ActiveX feature of C++Builder rely on specific versions of
// the header file UTILCLS.H found in the INCLUDE\VCL directory. If an 
// older version of the file is detected, you probably need an update/patch.
//
#error "This file requires a newer version of the header UTILCLS.H" \
       "You need to apply an update/patch to your copy of C++Builder"
#endif
#include <olectl.h>
#include <ocidl.h>
#if !defined(_NO_VCL)
#include <stdvcl.hpp>
#endif  //   _NO_VCL
#include <ocxproxy.h>

...

正如你可以看到这个文件很久以前就被生成了:)。我已经能够在 Windows 7 64位上使用 C ++ Builder 2010 构建此项目。但是,当我安装 XE2 并尝试解决由于现在默认为 STRICT 而不是 NO_STRICT 而出现的所有小问题时,我遇到了完全不同的问题。上述文件,以及以相同方式生成的其他文件,它们不再按预期工作。

我收到错误,如

  

[BCC32错误] MSMQ_OCX.h(66):E2090资格赛'Oleserver'不是   类或命名空间名称

寻找 MQOA.DLL 它声称使用了类似的东西似乎存在。在将项目更新到XE2时,有没有人知道如何解决这些问题?该项目之前幸免于升级,并且最后升级到C ++ Builder 2010.但我更像是一个Visual Studio人员,所以很多Embarcadero的东西都是新的领域。

1 个答案:

答案 0 :(得分:1)

我最终重新导入所需的类型库并删除旧的库,正如Remy Lebeau所建议的那样。在我的案例中,它是Microsoft的消息队列 XML 的库。

请注意,提供类似错误消息的其他一些问题可能是编译器只是混淆:)。尝试编译时不要定义 NO_STRICT