COM组件 C4772 错误解决

#import tlb 文件如果存在继承式的依赖,编译时会导致C4772 错误,有时发现即使正确引用了,仍然是C4772,此时可以尝试把所有的tlb文件放到工程目录下。也许可以解决。

#import referenced a type from a missing type library; '__missing_type__' used as a placeholder

A type library was referenced with the #import directive. However, the type library contained a reference to another type library that was not referenced with #import . This other .tlb file was not found by the compiler.

This warning is, by default, issued as an error. C4772 can not be suppressed with /W0.

Given the following type libraries on disk created from the following two file (compiled with midl.exe):

/* c4772a.idl */
[uuid("f87070ba-c6d9-405c-a8e4-8cd9ca25c12b")]
library C4772aLib
{
[uuid("f87070ba-c6d9-405c-a8e4-8cd9ca25c100")]
enum E_C4772a
{
one, two, three
};
};
/* c4772b.idl */
// C4772a.tlb is available when c4772b.tlb is built
[uuid("f87070ba-c6d9-405c-a8e4-8cd9ca25c12d")]
library C4772bLib
{
importlib ("c4772a.tlb");
[uuid("f87070ba-c6d9-405c-a8e4-8cd9ca25c12e")]
struct S_C4772b
{
enum E_C4772a e;
};
};

The following sample generates C4772:

// C4772.cpp
// assumes that C4772a.tlb is not available to the compiler
// #import "C4772a.tlb"
#import "C4772b.tlb" // C4772 uncomment previous line to resolve
// and make sure c4772a.tlb is on disk

你可能感兴趣的:(com)