过去,我会使用#import
来访问动态链接库(即*.DLL
)公开的函数。现在,Visual Studio 似乎有了一个新的添加新引用选项。
项目 => 属性页 => 常用属性 => 引用
我的问题是:我应该使用哪种方法?
引用文献
以下方法用于公开我们库中的函数:
更新1
我注意到的一件事是:与 C# 不同,您可以添加对 (1) GAC 中的程序集、(2) 文件系统上的程序集、(3) 解决方案中的项目的引用。看来在 C++ 中,您只能添加引用到当前解决方案中的项目。
最佳答案
具体规则:
#import
只能在 COM 类型库上使用。如果类型库嵌入到可执行文件中,则为 .tlb 文件或 .dll/.ocx,非常常见。编译器将类型库转换为 .tli 和 .tlh 文件,其中包含编译器理解的格式的声明以及智能指针类型和包装函数,使处理内存管理和运行时错误变得更加容易。在 C# 中,您可以使用“添加引用”或 Tlbimp.exe 来执行相同的操作。添加新引用
适用于 C++/CLI 项目中的 .NET 程序集。编译器导入存储在程序集元数据中的类型声明,大致相当于 native DLL 的 #include .h 文件。与在 C# 项目中添加引用完全相同。#include
用于包含带有声明的 .h 文件,这是告诉 C++ 编译器有关其他地方的代码的正常方式。从 VS2012 开始,
添加新引用
现在还可用于为作为解决方案一部分的静态库或 DLL 项目生成链接指令。链接器只是获取链接项目的 .lib 文件的指令。 C# 中没有等效项,它不使用链接器。项目 + 属性 > 链接器 > 输入 >
附加依赖项
是执行与上一个项目符号相同的操作的其他方法。如果 .lib 文件不是由解决方案中的项目生成的,则必须使用。
请注意两组项目符号之间的区别。前 3 个影响编译器并用于告诉它有关类型声明的信息。后两个影响链接器并用于告诉它链接存储在其他地方的代码。
关于c++ - 你应该: #import or "add new reference"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30132012/