gpt4 book ai didi

c++ - #pragma comment(lib) v #import?

转载 作者:行者123 更新时间:2023-11-28 02:58:51 24 4
gpt4 key购买 nike

我对 C++ 还是相当陌生,正在努力了解静态库和 DLL。我刚刚继承了一些代码,想知道是否有人可以给我一个澄清。

继承的代码包含两个库项目,称之为a和b。还有一个主项目,它使用两个库中的类。

让我感到困惑的一点是:项目 a 和项目 b 在构建时都将 .dll 输出到“..\.\Executables”,将 .lib 输出到“..\Shared\Lib”。主工程的stdafx.h包含库a,代码如下:

#include ..\projectA\a_class.h
#pragma comment( lib, "..\\Shared\\Lib\\projectA.lib" )

...它包含使用以下代码的库 b:

#import "..\..\Executables\projectB.dll"

然后它会利用两个库中的类。两者有什么区别?为什么当我尝试使用方法 B 包含库 A 时,它不起作用(类不可访问)?

提前致谢!

最佳答案

他们做不同的事情。您使用 #import 导入类型库并为 COM 对象生成包装类。类型库可以是 tlb 或可以封装在 dll 中(或作为 ocx,这与不同的名称)令人困惑。您唯一错过的是 #import 只与 COM 有关。

“正常”#pragma comment(lib, "blah.lib") - 这是在项目属性中定义额外库的替代方法 - 用于链接到静态或动态库,并且是只是用来导入lib本身导出的函数和符号。没有生成包装类,它与 COM 无关。

您可以阅读有关#import 的更多信息at MSDN here以及关于 #pragma 选项的更多信息 at MSDN here .

关于c++ - #pragma comment(lib) v #import?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21378484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com