今天使用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
就可以解决了.