cmake编译失败_C++ 编译指南

这篇博客详细列举了在C++开发中遇到的多种编译错误及其解决办法,包括找不到头文件、库文件冲突、NuGet安装第三方库、LNK错误、DLL找不到、堆栈溢出等问题,并提供了相应的解决方案,如正确配置Visual Studio项目属性、管理NuGet包等。
摘要由CSDN通过智能技术生成

3d004922229c1010161929d0aee63832.png

错误:找不到xxx.hpp,找不到xxx.lib,“模块计算机类型“x86”与目标计算机类型“x64”冲突”,“模块计算机类型“x64”与目标计算机类型“x86”冲突,Could NOT find 包名(missing: 库名_LIBRARY)等等类似错误

建议使用NuGet或vcpkg安装对应的第三方库。在Visual Studio 中 解决方案->[项目名称]->(右键)->引用->管理NuGet软件包->搜索并安装对应的第三方库。如果要对整个解决方案安装 工具->NuGet包管理器->管理解决方案的NuGet程序包,则可以搜索安装对应版本的第三方库。安装后还要在需要的项目上右键->生成依赖项->生成自定义,勾选对应的第三方库。

具体使用方法参考微软官方文档:NuGet 包管理器用户界面参考

=====================================

有时我们会希望解决方案里的一个项目与其他项目共享NugetPackages以保证它们使用相同版本的第三方库且节约硬盘空间:

在vcxproj和sln文件所在文件夹添加名为packages.config和nuget.config的文件,保证每个项目的packages.config文件内容相同,且nuget.config文件指向的NugetPackages文件夹目录相同(可以使用相对目录)。重启解决方案,在解决方案的对应项目上单击右键->管理Nuget程序包,如果在其中发现了已经安装的第三方库则说明配置成功。

=====================================

错误:“LNK1107 文件无效或损坏: 无法在 0x3E8 处读取”

“属性->配置属性->链接器->输入->附加依赖项” 应配置使用到的静态库文件名,如"opencv_world346d.lib",而不是动态库"opencv_world346d.dll"

=====================================

错误:找不到xxx.dll

把动态库文件 "opencv_world346d.dll

cmake_minimum_required(VERSION 3.8.0 FATAL_ERROR) project(mcu_kit VERSION 0.1.0 DESCRIPTION "mcu-kit SDK" LANGUAGES C ) set(PROJECT_BRIEF "vDiscovery") set(CMAKE_C_STANDARD 11) set(CMAKE_C_EXTENSIONS ON) set(CMAKE_C_STANDARD_REQUIRED ON) set(CMAKE_CXX_STANDARD 11) set(CMAKE_POSITION_INDEPENDENT_CODE ON) add_compile_options(-Wall) list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") include(CMakePrintHelpers) include(ConfigureChecks) if(EXISTS "${PROJECT_SOURCE_DIR}/config.cmake") include(config.cmake) else() message(FATAL_ERROR "Can't find cmake.config file") endif() if(${CMAKE_CROSSCOMPILING}) set(LV_SIMULATOR_ON_PC OFF) else() set(LV_SIMULATOR_ON_PC ON) endif() configure_file( "${PROJECT_SOURCE_DIR}/base/base_sdk_version.h.in" "${PROJECT_SOURCE_DIR}/base/base_sdk_version.h" ) configure_file( "${PROJECT_SOURCE_DIR}/base/base_config.h.in" "${PROJECT_SOURCE_DIR}/base/base_config.h" ) set(CMAKE_INSTALL_BINDIR ${CMAKE_INSTALL_PREFIX}/bin) set(CMAKE_INSTALL_SBINDIR ${CMAKE_INSTALL_PREFIX}/sbin) set(CMAKE_INSTALL_LIBDIR ${CMAKE_INSTALL_PREFIX}/lib) set(CMAKE_INSTALL_INCLUDEDIR ${CMAKE_INSTALL_PREFIX}/include) set(CMAKE_INSTALL_SYSCONFDIR ${CMAKE_INSTALL_PREFIX}/etc) set(CMAKE_INSTALL_SHARESTATEDIR ${CMAKE_INSTALL_PREFIX}/com) set(CMAKE_INSTALL_LOCALSTATEDIR ${CMAKE_INSTALL_PREFIX}/var) set(CMAKE_INSTALL_INFODIR ${CMAKE_INSTALL_PREFIX}/info) set(CMAKE_INSTALL_LOCALEDIR ${CMAKE_INSTALL_PREFIX}/locate) set(CMAKE_INSTALL_MANDIR ${CMAKE_INSTALL_PREFIX}/man) set(CMAKE_INSTALL_DOCDIR ${CMAKE_INSTALL_PREFIX}/doc) set(CMAKE_INSTALL_RESDIR ${CMAKE_INSTALL_PREFIX}) include(PrepareInstall) set(KIT_ROOT_DIR ${CMAKE_SOURCE_DIR}) add_subdirectory("base") # add_subdirectory("third-party") add_subdirectory("lib") add_subdirectory("drivers") add_subdirectory("framework") add_subdirectory("sysapp") add_subdirectory("app") include(GeneratePkgConfig) include(Linux-kitInfo)详细注释一下这段代码
05-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值