vs2019编译报错Error D8027

今天在window 7上运行vs2019编译环境,结果竟然报错error D8027 connot execute “path\c1xx.dll”,这种错误明显是依赖dll错误,两种情况:

  1. 依赖或间接依赖的dll缺失或版本错误。
  2. 依赖的dll路径错误,没有在正确路径下查找(其实和第一种情况本质相同)

因为在win10和server以及个别win7机器上是可以正常编译,所以可以排除第一中情况,那么就是第二种路径错误,尝试将路径添加的系统path下,编译错误仍然没有解决。

于是网上看看有没有遇到相同问题的小伙伴,然后看到官网有讨论这个问题的跟帖

https://developercommunity.visualstudio.com/t/cl-command-line-error-d8027-cannot-execute-pathtoc/1106548

大概意思是cl.dll应用的LOAD_LIBARY_SEARCH_DEFAULT_DIRS标准,windows7没有支持,在KB2758857补丁中才支持。

于是在cmd下输入命令systeminfo

查看系统中有没有安装这个补丁,果然安装,官网下载

X64  https://www.microsoft.com/zh-cn/download/details.aspx?id=35902

X86  https://www.microsoft.com/zh-cn/download/details.aspx?id=35903

也可以跳转到资源下载

https://download.csdn.net/download/abc1990fly/90066006?spm=1001.2014.3001.5503

按提示安装完成后重启电脑,果然完美解决

如果想验证可以将安全补丁删除

在cmd窗口输入wusa /uninstall /KB:补丁号(2758857)

### CMake 编译时 `error while loading shared libraries` 的解决方案 当遇到 `error while loading shared libraries: No such file or directory` 类型的错误时,通常是因为系统无法找到所需的共享库文件。以下是可能的原因以及相应的解决方法: #### 1. **确认共享库是否存在** 首先需要检查目标共享库文件是否存在于系统的某个目录中。可以使用命令 `find / -name "lib*.so*"` 来查找特定的 `.so` 文件[^1]。 如果未找到该文件,则说明缺少必要的依赖项。可以通过包管理器安装缺失的库。例如,在 Ubuntu 上可以尝试以下命令来搜索并安装: ```bash apt search lib<missing-library-name> sudo apt install <package-name> ``` #### 2. **更新动态链接器缓存** 即使共享库已经存在,但如果它不在动态链接器的标准搜索路径中,仍然会引发此错误。此时可以运行以下命令刷新动态链接器缓存: ```bash sudo ldconfig ``` 此操作会让系统重新扫描 `/etc/ld.so.conf.d/` 和其他标准位置中的共享库,并将其加入到全局可见范围[^4]。 #### 3. **设置环境变量 `LD_LIBRARY_PATH`** 如果共享库位于非标准路径(如自定义构建的库),则需通过设置 `LD_LIBRARY_PATH` 环境变量告知程序其所在位置。例如: ```bash export LD_LIBRARY_PATH=/path/to/library:$LD_LIBRARY_PATH ``` 这种方式适用于临时解决问题的情况。如果希望永久生效,可将上述命令添加至用户的 shell 配置文件(如 `~/.bashrc` 或 `/etc/profile`)[^5]。 #### 4. **指定链接路径** 在编写 CMakeLists.txt 文件时,可通过显式声明的方式让编译器知道额外的库路径。例如: ```cmake link_directories(/custom/path/to/libs) target_link_libraries(your_target PRIVATE custom_library_name) ``` 同时确保这些路径被正确传递给最终的应用程序。 #### 5. **修复具体案例中的 OpenSSL 库问题** 对于某些特殊场景下的错误(比如涉及 OpenSSL 的情况),可以直接下载对应版本的预编译二进制包并安装。例如针对 `libssl.so.1.1` 的问题,可以从官方源获取适合当前发行版的 DEB 包并执行安装: ```bash wget https://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1-1ubuntu2.1~18.04.23_amd64.deb sudo dpkg -i libssl1.1_1.1.1-1ubuntu2.1~18.04.23_amd64.deb ``` 安装完成后记得再次调用 `sudo ldconfig` 更新缓存[^3]。 --- ### 示例代码片段 假设我们正在处理一个简单的项目结构,其中包含外部依赖关系。可以在项目的根目录下创建如下内容作为参考: ```cmake # CMakeLists.txt cmake_minimum_required(VERSION 3.10) project(MyProject LANGUAGES CXX) add_executable(my_app main.cpp) # 添加第三方库所在的绝对路径 link_directories(/thirdparty/libs) # 显式连接所需的目标库 target_link_libraries(my_app PRIVATE my_custom_lib) ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值