通过 “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 目录寻址会是个好办法。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)