_使用CLion的Vcpkg安装SDL2,添加至CMakelists时报错,编译报错

语言:C++20

编译器:gcc 14.2

摘要:初次使用Vcpkg添加SDL2,出现CMakelists找不到错误、编译缺失main错误、运行失败错误。


CMakelists缺失错误:

        使用CLion的Vcpkg安装SDL2时,按照指示把对应代码添加至CMakelists,结果如下图所示报错:

         显示找不到指定的两个cmake文件

        提示给的解决办法是要么设置CMAKE_PREFIX_PATH这个变量,要么设置SDL2_DIR变量。

        但在实测中,真正有效的只有设置CMAKE_PREFIX_PATH变量。设置的位置要与实际Vcpkg里的库安装路径一致。如下图,安装的第三方库的路径,实际是在你安装的Vcpkg目录下的packages目录下(此处我的Vcpkg安装目录就在该项目工程目录下),找到对应的库目录,然后设置目录即可。

set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} Vcpkg/packages/sdl2_x64-mingw-dynamic)

        重新cmake一下,即可成功

编译缺失main

        编译时会报错:

        原因是在SDL2中,函数入口是如下签名,需要把int main()改为 int main(int argc, char *argv[])即可

 int main(int argc, char *argv[])

运行失败

        接下来就是运行程序,不出意外的情况下,会出现意外。此处代码表示运行时缺少dll文件

         虽然我已经在CMakelists里加了这一句把SDL2.dll放到了编译的程序所在目录

# 确保 SDL2.dll 复制到输出目录
configure_file(Vcpkg/packages/sdl2_x64-mingw-dynamic/bin/SDL2.dll ${CMAKE_CURRENT_BINARY_DIR}/SDL2.dll COPYONLY)

        但依然会报错,不过由于CLion的提示信息还是有些匮乏,我们可以进入编译的程序目录,然后运行程序。会出现下面错误,没想到缺失的竟然是SDL2d.dll。这是因为此时的CMakelists使用的是Debug构建的,需要匹配的SDL2d.dll,如果是Release版本,那么就是SDL2.dll

    

        根据这个文件可在Vcpkg目录下进行全局搜索,最后找到了这个dll文件,只是没想到出现的位置非常刁钻,分别位于三个不同的目录

        不过显然最后一条路径才是正经路径。然后便是把路径添加上去

configure_file(Vcpkg/packages/sdl2_x64-mingw-dynamic/bin/SDL2.dll ${CMAKE_CURRENT_BINARY_DIR}/SDL2.dll COPYONLY)
configure_file(Vcpkg/packages/sdl2_x64-mingw-dynamic/debug/bin/SDL2d.dll ${CMAKE_CURRENT_BINARY_DIR}/SDL2d.dll COPYONLY)

如此便可正常运行

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/65845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

可解释性:走向透明与可信的人工智能

随着深度学习和机器学习技术的迅速发展,越来越多的行业和领域开始应用这些技术。然而,这些技术的“黑盒”特性也带来了不容忽视的挑战🎲。在许多任务中,尽管这些模型表现出色,取得了相当高的精度,但其决策过…

SQL Server导出和导入可选的数据库表和数据,以sql脚本形式

一、导出 1. 打开SQL Server Management Studio,在需要导出表的数据库上单击右键 → 任务 → 生成脚本 2. 在生成脚本的窗口中单击进入下一步 3. 如果只需要导出部分表,则选择第二项**“选择具体的数据库对象(Select specific database objects)”**&am…

Eclipse下载安装图文教程

一、下载Eclipse 1、打开 Eclipse官网 2、下载免安装版; 3、切换国内下载源 4、下载压缩包到本地; 5、下载完成后直接解压就可以使用了; 二、汉化 1、打开eclipse,点击 ‘Help’ → ‘Install new software…’ 2、点击A…

【开源免费】基于SpringBoot+Vue.JS音乐网站(JAVA毕业设计)

本文项目编号 T 109 ,文末自助获取源码 \color{red}{T109,文末自助获取源码} T109,文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…

Sonic:开源Go语言开发的高性能博客平台

Sonic:一个用Go语言开发的高性能博客平台 简介 Sonic,一个以其速度如声速般快速而命名的博客平台,是一个用Go语言开发的高性能博客系统。正如其名字所暗示的,Sonic旨在提供一个简单而强大的博客解决方案。这个项目受到了Halo项目…

Pygame Zero(pgzrun)详解(简介、使用方法、坐标系、目录结构、语法参数、安装、实例解释)

Pygame Zero(pgzrun)详解 (简介、使用方法、坐标系、目录结构、语法参数、安装、实例解释) 本文目录: 零、时光宝盒 一、Pygame Zero简介 二、Pygame Zero的编写游戏的一般流程 三、Pygame Zero 的坐标系 四、Py…

Java jni调用nnom rnn-denoise 降噪

介绍&#xff1a;https://github.com/majianjia/nnom/blob/master/examples/rnn-denoise/README_CN.md 默认提供了一个wav的例子 #include <stdint.h> #include <stdlib.h> #include <stdio.h> #include <math.h> #include <string.h>#include …

图像处理-Ch7-小波函数

个人博客&#xff01;无广告观看&#xff0c;因为这节内容太多了&#xff0c;有点放不下&#xff0c;分了三节 文章目录 多分辨率展开(Multi-resolution Expansions)序列展开(Series Expansions)尺度函数(Scaling Function)例&#xff1a;哈尔尺度函数(Haar scaling func)多分…

solr9.7 单机安装教程

1.环境要求:jdk11以上 2.下载wget https://dlcdn.apache.org/solr/solr/9.7.0/solr-9.7.0.tgz 3.解压 4.修改solr.in.sh配置 5.启动命令 bin/solr start 6.创建core bin/solr create -c <core名称> 注意:用solr ui界面创建&#xff0c;会提示找不到solrconfig.xml和m…

Python爬虫(一)- Requests 安装与基本使用教程

文章目录 前言一、简介及安装1. 简介2. 安装 Requests2.1 安装2.2 检查安装是否成功 二、使用 Requests 发送 HTTP 请求1. 发送 GET 请求2. 发送 POST 请求3. 发送 PUT 请求4. 发送 DELETE 请求5. 发送 HEAD 请求6. 发送 OPTIONS 请求 三、传递参数1. GET 请求传递 URL 参数1.1…

使用exe4j将jar转成exe、java打包exe

1、maven打包 需要配置以下插件&#xff0c;注意skip为false 插件配置中设置 <skip>true</skip> 时&#xff0c;实际上是告诉 Maven 在构建过程中跳过 spring-boot-maven-plugin 插件的执行。也就是说&#xff0c;Maven 在打包时不会将项目打包成可执行的 JAR 文…

基本算法——分类

目录 创建项目 导入依赖 加载数据 特征选择 学习算法 对新数据分类 评估与预测误差度量 混淆矩阵 通过模型的预测结果生成 ROC 曲线数据 选择分类算法 完整代码 结论 创建项目 首先创建spring boot项目&#xff0c;我这里用的JDK8&#xff0c;springboot2.7.6&…

Debian 系统中解决中文日志乱码问题

在 Debian 系统中&#xff0c;打印中文日志时经常会遇到乱码问题。这通常是因为系统的 locale 设置不正确&#xff0c;或者缺少所需的字体支持。本文将详细介绍如何解决此类问题&#xff0c;以确保你的 Debian 系统能够正确显示和处理中文字符。 一 乱码问题 问题描述当你尝试…

【电源专题】LDO关键DC参数——效率

在讲到电源的效率方面,很多时候网上最经常看到的是“LDO的效率低,开关电源效率高,所以LDO需要更大的散热器来帮助耗散热能”。 比如如下所示为网上找到的一些总结,一般也是大家所熟知的: 是的,这描述在一定的使用条件下是正确对的,但并不完全对,因为不同的工作…

传统听写与大模型听写比对

在快节奏的现代生活中&#xff0c;听写技能仍然是学习语言和提升认知能力的重要环节。然而&#xff0c;传统的听写练习往往枯燥乏味&#xff0c;且效率不高。现在&#xff0c;随着人工智能技术的发展&#xff0c;大模型听写工具的问世&#xff0c;为传统听写带来了革命性的变革…

Spring Bean required a single bean, but 2 were found,发现多个 Bean

问题复现 在使用 Autowired 时&#xff0c;不管你是菜鸟级还是专家级的 Spring 使用者&#xff0c;都应该制造或者遭遇过类似的错误&#xff1a; required a single bean, but 2 were found 顾名思义&#xff0c;我们仅需要一个 Bean&#xff0c;但实际却提供了 2 个&#xff…

李宏毅机器学习笔记-Transformer

目录 1. Seq2seq 2. encoder Transformer 中的 Block 结构 3. Decoder 4.Encoder和Decoder间的信息传递 5.Training 6.Tips 1. Seq2seq Transformer 是一个seq2seq的model。Seq2seq指的是input是一个序列&#xff0c;输出也是一个序列&#xff0c;输出的长度是由机器自己…

基于Docker的ETCD分布式集群

目录 1. 说明 2. 配置表 3. 步骤 3.1 放行端口 3.2 docker-compose 文件 3.3 部署到3台服务器 3.4 相关命令 4. 参考 1. 说明 - 以docker容器方式实现ETCD分布式集群&#xff0c;为其他项目提供支持&#xff0c;经过反复试验成功部署(网上资料大都过期或部署失败)。 -…

LeetCode 力扣 热题 100道(二十七)除自身以外数组的乘积(C++)

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂…

DSMM数据安全能力成熟度评估--学习笔记(1)

目录 DSMM是什么&#xff1f; 1、能力成熟度等级评估流程 2、DSMM评估方式&#xff1f; 3、能力成熟度模型使用方法 4、 安全能力维度 4.1 能力构成 4.2 组织建设 4.3 制度流程 4.4 技术工具 4.5 人员能力 5、 能力成熟度等级维度 6、 数据安全过程维度 数据安全能…