通过 “vcpkg” 编译库程序默认情况下DLL会依赖 vcruntime140.dll 动态链接库文件,如果可以MT静态编译代码出来只有一个独立EXE程序文件的情况,是不需要的复制这个DLL文件的,如果生成出来带了一些DLL文件,那么最好就CHECK一下这些DLL文件的DLL导入依赖清单,如果不依赖任何文件还好,如果依赖了其它DLL文件就逐个排查需要包含那些DLL到程序目录下面。

检索DLL库导入DLL库依赖可以使用工具:

1、dumpbin /dependents

2、PE ExplorerDependency Walker

3、Dependency WalkerDependency Walkerendency WalkerDependency WalkerDependency

例如,vcpkg install boost:x86-windows,那么关联编译的 openssl 1.1.1? 库程序就是非静态的会依赖 vcruntime140.dll CRT运行库。

如果 vcpkg install boost:x86-windows-static,那么关联编译的 openssl 1.1.1?库程序就是可以被静态编译的。

但是,vcpkg 编译为静态模式,Visual Studio 里面是没有办法找到头文件跟库文件的,这个就需要人们手动去配工程属性,Include/Libraries 目录寻址,但有个缺点是不要有 “x86-windows、x64-windows” 的 vcpkg 编译安装记录,否则可能程序编译过程出现混乱,当然,这是建立在 vcpkg 执行过CLI命令行指令 “vcpkg integrate install”。

当然,个人的建议是不要使用这种偷懒式的方法,“vcpkg integrate project” 或者手动配置工程代码 Include/Libraries 目录寻址会是个好办法。

GitHub 加速计划 / vc / vcpkg
8
1
下载
vcpkg - 一个用于管理 C 和 C++ 库的工具,支持在 Windows、Linux 和 macOS 上安装和集成各种库。
最近提交(Master分支:3 个月前 )
1f65d845 1 天前
6de717b7 1 天前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐