Loadlibrary是什么#import呢?

时间:2016-02-16 05:14:55

标签: c++ winforms

根据我的理解#import在编译时采用所需的标头/依赖项。

Load library在运行时从运行pc获取其依赖项。如果是错的,请纠正我。

LoadLibrary究竟与#import完全相同吗?

1 个答案:

答案 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登陆页面。