【发布时间】:2017-01-04 19:16:17
【问题描述】:
我对静态和动态链接库以及 .lib 和 .dll 文件有些困惑。
我有一个包含两个库的项目,一个是我自己构建的,一个来自开源库。
我自己构建的项目是同一解决方案(Visual Studio 2015,C++)中的一个单独项目,我不需要复制 .lib 文件或为可执行文件创建 DLL 来构建和运行
对于其他开源库,我确实需要将 .lib 文件和 DLL 复制到可执行文件夹中。但是,我认为可以静态链接 .lib 文件而不必复制 DLL。
这是否意味着我需要以不同的方式编译开源库?就像将定义 __declspec(dllexport) 更改为 __declspec(dllimport) 一样?或者在编译器选项中将/mD改为/mT?
这两个我都试过了,还是说没有.dll就无法启动
或者我可以通过更改可执行项目中的设置来静态链接这个库吗?如果有,这些设置是什么?
编辑:我知道这是一个可以在谷歌上查找的标准问题,但我有一段时间无法找到确切的答案。主要是,我对需要更改什么设置以及需要更改它们的哪个项目感到困惑。(库或可执行文件)。
我假设静态链接意味着库内置于可执行文件中,而动态链接意味着库需要位于单独的文件中,如果不正确,请告诉我。否则,我需要知道如何将库 构建到 可执行文件中。
我可以继续更改开源库中的构建选项,我已经尝试过了。
谢谢, -D
【问题讨论】:
标签: c++ winapi visual-studio-2015