Visual Studio 2015 中 SDL2 开发环境的搭建

Visual Studio 2015 中 SDL2 开发环境的搭建

  • Visual Studio 2015 中 SDL2 开发环境的搭建
    • 新建控制台工程
    • 拷贝并配置 SDL2 开发文件
      • 拷贝 SDL2 开发文件
      • 配置 SDL2 开发文件
    • 测试
    • SDL2 开发文件的下载链接

Visual Studio 2015 中 SDL2 开发环境的搭建

新建控制台工程

新建 Win32 控制台应用程序。

具体流程:文件->新建->项目->Win32控制台应用程序。

拷贝并配置 SDL2 开发文件

拷贝 SDL2 开发文件

  1. 头文件(*.h)拷贝至项目文件夹的 include 子文件夹下。
  2. 导入库文件(*.lib)拷贝至项目文件夹的 lib 子文件夹下。
  3. 动态库文件(*.dll)拷贝至项目文件夹下。

配置 SDL2 开发文件

  1. 打开属性面板:解决方案资源管理器->右键单击项目->属性。

  2. 头文件配置:配置属性->C/C+±>常规->附加包含目录,输入“include”(刚才拷贝文件的目录)。

  3. 导入库配置:配置属性->链接器->常规->附加库目录,输入“lib” (刚才拷贝文件的目录),配置属性->链接器->输入->附加依赖项,输入“SDL2.lib; SDL2main.lib”(导入库的文件名)。

  4. 动态库不用配置。

测试

  1. 创建源代码文件:在工程中创建一个包含 main() 函数的 C/C++ 文件(如果已经有了可以跳过这一步)。
  2. 包含头文件:
    • 如果是 C 语言中使用 SDL2,则直接使用下面代码:
    #include "SDL2/SDL.h"
    
    • 如果是 C++ 语言中使用 SDL2,则使用下面代码:
    #define __STDC_CONSTANT_MACROS
    extern "C"
    {
    #include "SDL2/SDL.h"
    }
    
  3. main() 中调用一个 SDL2 的初始化函数:
    int main(int argc, char* argv[])
    {if (SDL_Init(SDL_INIT_VIDEO)){printf("Could not initialize SDL - %s\n", SDL_GetError());}else{printf("Success init SDL");}return 0;
    }
    

中间遇到 2 个报错:

报错 1:LNK2019 无法解析的外部符号 __imp__fprintf,该符号在函数 _ShowError 中被引用

解决方法:添加以下代码:

#pragma comment(lib, "legacy_stdio_definitions.lib")

报错 2:LNK2019 无法解析的外部符号 __imp____iob_func,该符号在函数 _ShowError 中被引用

解决方法:添加以下代码:

extern "C"
{
FILE __iob_func[3] = { *stdin, *stdout, *stderr };
}

添加完上面的的代码,运行程序。如果运行无误,则代表 SDL2 已经配置完成。

在这里插入图片描述

PS:这里要在打印语句处设置断点,不然输出完程序就结束了,来不及看输出。

SDL2 开发文件的下载链接

链接:SDL2 库.zip

来自雷霄骅博士,属于比较旧的版本。

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

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

相关文章

vue-springboot基于JavaWeb的汽配汽车配件销售采购管理系统

过对知识内容的学习研究,进而设计并实现一个基于JavaWeb的汽配销售管理系统。系统能实现的主要功能应包括;汽车配件、销售订单、采购订单、采购入库等的一些操作,ide工具:IDEA 或者eclipse 编程语言: java 数据库: mysql5.7 框架&…

OFDM——PAPR减小

文章目录 前言一、PAPR 减小二、MATLAB 仿真1、OFDM 信号的 CCDF①、MATLAB 源码②、仿真结果 2、单载波基带/通频带信号的 PAPR①、MATLAB 源码②、仿真结果 3、时域 OFDM 信号和幅度分布①、MATLAB 源码②、仿真结果 4、Chu 序列和 IEEE802.16e 前导的 PAPR①、MATLAB 源码②…

C#编程-编写和执行C#程序

编写和执行C#程序 可以使用Windows记事本应用程序来编写C#程序。在记事本应用程序中创建C#程序后,您需要编译并执行该程序以获得所需的输出。编译器将程序的源代码转换为机器代码,这样计算机就能理解程序中的指令了。 注释 除了记事本,您还可以使用任何其他文本编辑器来编写…

MAC 中多显示器的设置(Parallels Desktop)

目录 一、硬件列表: 二、线路连接: 三、软件设置: 1. 设置显示器排列位置及显示参数 2. 分别设置外接显示器为:扩展显示器,内建显示器为主显示器 3. 设置Parallels Desktop屏幕参数 四、结果 一、硬件列表&a…

C++实现定积分运算

文章目录 题目代码 题目 代码 #include <iostream> #include <cmath> #include <functional>using namespace std;// 定积分函数 double integrate(function<double(double)> func, double a, double b, int num_intervals) {double h (b - a) / num…

使用STM32实现多设备UART通信指南

本文将介绍如何在STM32上实现多设备UART通信&#xff0c;包括配置多个UART接口、数据的发送和接收&#xff0c;以及如何有效地进行多设备通信。我们将使用STM32CubeMX和HAL库来演示配置过程&#xff0c;并给出相关的示例代码和技巧。UART&#xff08;Universal Asynchronous Re…

怎么解决 Nginx反向代理加载速度慢?

Nginx反向代理加载速度慢可能由多种原因引起&#xff0c;以下是一些可能的解决方法&#xff1a; 1&#xff0c;网络延迟&#xff1a; 检查目标服务器的网络状况&#xff0c;确保其网络连接正常。如果目标服务器位于不同的地理位置&#xff0c;可能会有较大的网络延迟。考虑使用…

灸哥问答:测试架构师应该掌握哪些技能?

测试架构师是软件测试领域的高级职位&#xff0c;在承担工作时需要掌握多方面的技能和能力以确保测试过程的有效性、高效性和可靠性。从我的经历和认知角度&#xff0c;我觉得作为测试架构师应该掌握具备以下技能&#xff1a; 一、测试方法和策略 掌握不同的测试方法&#xf…

详细讲解MybatisPlus中的IService类中的CRUD功能(全)

目录 前言1. 基本概念2. CRUD2.1 插入2.1.1 save2.1.2 saveOrUpdate 2.2 删除2.3 修改2.4 查询2.4.1 get2.4.2 list2.4.3 page 2.5 chain链式函数 前言 大部分CRUD都来源这个类&#xff0c;对此有意义剖析&#xff0c;方便之后的功能开发 1. 基本概念 在 MyBatis-Plus 中&am…

7.java——异常

异常——error&#xff08;资源耗尽&#xff0c;JVM内部系统错误&#xff0c;代码一般处理不了&#xff09;和excption&#xff08;数组越界&#xff0c;空指针访问&#xff0c;代码可以处理&#xff09; java.lang.Throwable;异常体系的根父类 -------java.lang.Error:错误。…

Linux安装Oracle调用dbca无响应和密码问题

Linux服务器下调用dbca无响应&#xff0c;或弹出如下提示&#xff1a; 则需要在Linux命令行窗口&#xff0c;输入如下命令即可 export DISPLAYip:0.0 注意&#xff1a;该ip应该为可显示图形桌面的机器ip地址。 该桌面需要已经安装了Xmanager-Passive&#xff08;比如 Xmanag…

ES 通过查询更新某个字段,Error 500 (Internal Server Error)

问题描述&#xff1a; 项目中通过查询ES中某个字段&#xff0c;并更新某个值的字段&#xff0c;当量比较大的时候报错&#xff1a; upsert associated failed: elastic: Error 500 (Internal Server Error): Failed to compile inline script [ctx._source.pcap_filename ] …