Pre*_*cco 2 c++ visual-c++ visual-studio-2013
在过去,我习惯于#import访问动态链接库(即*.DLL)所公开的函数.现在看来Visual Studio有一个新的Add New Reference选项.
Project => Property Pages => Common Properties => References
我的问题是:我应该使用哪种方法?
参考
以下方法用于公开我们库中的函数:
更新1
我注意到的一件事是:与C#不同,您可以在(1)GAC中的程序集,(2)文件系统上的程序集,(3)解决方案中的项目中添加引用.看来在C++中,您只能在当前解决方案中添加对项目的引用.
具体规则:
#import应该只用于COM类型库.如果类型库嵌入可执行文件中,则.tlb文件或.dll/.ocx非常常见.编译器将类型库转换为.tli和.tlh文件,该文件包含编译器理解的格式的声明以及智能指针类型和包装函数,这使得处理内存管理和运行时错误变得更加容易.在C#中,你可以使用Add Reference或Tlbimp.exe来做同样的事情.
Add New Reference适用于C++/CLI项目中的.NET程序集.编译器导入存储在程序集元数据中的类型声明,粗略等效于#include本机DLL的.h文件.与C#项目中的Add Reference完全等效.
#include 用于包含带声明的.h文件,这是告诉C++编译器有关其他地方的代码的常用方法.
从VS2012开始,Add New Reference现在还可以用于为静态库或DLL项目生成链接指令,该项目是解决方案的一部分.链接器只是获取链接项目的.lib文件的指令.没有C#中的等价物,它不使用链接器.
项目+属性>链接器>输入> Additional Dependencies是与前一个项目完成相同操作的另一种方法.而且必须在不通过在溶液中的项目所产生的的.lib文件中使用.
注意两组子弹之间的区别.前3个影响编译器,用于告诉它类型声明.后者2影响链接器并用于告诉它链接存储在别处的代码.