pay*_*man 2 c++ linker dynamic-linking static-linking visual-studio-2013
我想在我的项目(VS2013 - c++)中使用一些dll,
我使用“项目->属性->vc++目录”给出了dll和头文件的路径,构建项目后,出现链接器错误(常见的“无法解析的外部符号”)。这个问题可以通过将.lib文件交给链接器来解决!
但是为什么动态链接需要静态库(.lib)???
它是一个导入库,其中包含导出的定义,位于(*)DLL
的内部和名称。DLL
您可以使用
LIB
该/DEF
选项来创建导入库和导出文件。LINK
使用导出文件构建包含导出(通常是动态链接库 (DLL
))的程序,并使用导入库来解析其他程序中对这些导出的引用。
并且:
在大多数情况下,您不需要使用
LIB
来创建导入库。当您链接包含导出的程序(可执行文件或 )时DLL
,LINK
会自动创建描述导出的导入库。稍后,当您链接引用这些导出的程序时,您可以指定导入库。
动态库在运行时加载(在应用程序启动时) - 链接器不会检查某些特定符号驻留在DLL
. Header
说__dllimport
- “这个符号是外部的,它应该从某个地方导入”。Lib
说“我知道这个符号在哪里 - 它位于XXX.dll
,所以启动后看看那里”。
(*)我看到很多人试图更改名称.lib
并相应地.dll
期望它会起作用。的内容.lib
是它没有的原因。
归档时间: |
|
查看次数: |
2496 次 |
最近记录: |