浅蓝色的琴弦
微风祈愿
今天使用WINCE IMAGE COM组件的时候
1>WinMain.obj : error LNK2001: unresolved external symbol CLSID_ImagingFactory
1>WinMain.obj : error LNK2001: unresolved external symbol IID_IImagingFactory

外部符号无法连接...

这会又的查MSDN了

原来是GUID导致的...

在 Microsoft Visual c + + 中,如果超过一个特定版本的编译器版本 GUID 必须初始化一次。由于这个原因有两个不同版本的 DEFINE_GUID 宏。一个版本只是声明对符号名的外部引用。其他版本实际上初始化符号名的 GUID 的值。如果您收到一个未初始化的符号名的该的 GUID GUID 错误 LNK2001。

注意DEFINE_GUID 宏 guiddef.h 头文件中的声明一个 GUID。此外定义 GUID,请在其中定义 $ GUID 的源文件中包括 INITGUID.H 头文件。

您可以确保您 GUID 获取初始化在两种方法之一:
  • 如果使用的预编译的头文件包括 INITGUID.H 头文件之前应该初始化它的实现文件中定义 GUID。(应用程序向导生成的 MFC 项目时使用预编译的头默认情况下)。
  • 如果您不使用预编译的头,定义 INITGUID 包括 OBJBASE.H 之前。(OBJBASE.H 包含由 OLE2.H)。
注意如果您正在使用预编译的头时,比某个特定版本的编译器版本,您可以在单个的头文件,包括其他头文件中包括 INITGUID.H 头文件。这将导致在其中此头文件是包含的所有源代码文件中定义 GUID。您将不会收到一个 LNK2001 错误,即使一个符号被定义多次。这是因为在 DEFINE_GUID 宏使用一个 DECLSPEC_SELECTANY 关键字。该关键字可确保链接器可以正确处理此多个定义。

http://support.microsoft.com/kb/130869 地址..



用#Define INITGUID
//头文件...
#undef INITGUID

就可以解决了.
posted on 2010-09-15 15:51 Platox 阅读(643) 评论(0)  编辑 收藏 引用 所属分类: Wince

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理