根据我的理解#import
在编译时采用所需的标头/依赖项。
Load library
在运行时从运行pc获取其依赖项。如果是错的,请纠正我。
LoadLibrary
究竟与#import
完全相同吗?
答案 0 :(得分:3)
#import指令是代码生成器。它采用类型库的路径,这是一种独立于语言的方式,用于描述以任意语言编写的代码所暴露的类型。相当于C或C ++中的.h文件。可以是.tlb文件,最常见的类型库作为资源嵌入可执行文件中。编译器将类型库内容解编译为等效的C和C ++声明。
该指令生成两个文件,您可以在构建目录中找到它们。 .tlh文件是C或C ++编译器可以使用的头文件。 .tli文件包含C ++包装器函数,这使得调用接口方法更不容易出错。基于负责所需引用计数的_com_ptr_t
智能指针类,包装函数将错误代码转换为C ++异常。
完全没有LoadLibrary
,由COM基础架构负责。在创建公开类型的对象时自动调用。 CoCreateInstance()是负责处理它的工厂函数。注册表包含查找匹配的可执行文件所需的信息。
有学习曲线,避免偷工减料。关于它的书籍很多很多,尽管很多都是绝版的,但是C ++包装类is here的MSDN登陆页面。