编译器编译完你所有的源文件后,它必须将它们链接在一起。为了让程序正确链接,它需要知道所有函数的地址,包括SDL的函数。对于动态链接的库,这些地址在库文件中。...库文件中有导入地址表,因此您的程序可以在运行时导入函数。和头文件一样,你可以配置你的编译器在SDL库文件所在的额外目录中搜索,或者把库文件和编译器自带的其他库文件放在一起。...你还必须告诉链接器,要针对链接器中的库文件进行链接。如果链接器抱怨找不到 -lSDL 或 SDL2.lib,这意味着库文件不在链接器寻找库文件的地方。...如果链接器抱怨说有未定义的引用,可能意味着它从未被告知要链接库。 当你的程序被编译和链接后,你需要在运行它时能够针对库进行链接。为了运行一个动态链接的应用程序,你需要能够在运行时导入库的二进制文件。...很重要的一点是,函数的参数是一个整数,后面是一个char*数组,返回类型是一个整数。任何其他类型的main函数都会导致对main的未定义引用。SDL需要这种类型的main,所以它能兼容多种平台。
,所以广泛的应用在多种游戏和对速度敏感的应用中,比如鼎鼎大名的steam平台/ffmpeg/qemu/模拟器等,当前的版本是2.0。...主要需要说明的有两点,但其实跟这段代码并没有直接关系,而是有关在众多的绘图技术、架构、方案中,SDL处于一个什么位置: 1.首先是绘图哲学,使用过OpenGL及Direct3D的看这些代码应当不陌生,...在mac电脑上安装这两个库的命令是:brew install sdl2 sdl2_image。...sdl2_image)的意思是,将sdl2_image代码库及其依赖库(这里当然就是sdl2库)的编译参数和引用库参数全部显示出来,作为字符串加入到编译命令中去。...但是这种方式在别的shell,比如fish中是不起作用的,但是$( ... )这样的方式就有了更好的通用性。
变量中,以便CMake能够找到SDL2相关的模块。...find_package 函数调用 这些行用于查找和加载所需的SDL2库和相关的库(如SDL2_image、SDL2_net、SDL2_mixer和SDL2_ttf)。...file(GLOB SRC src/*.c) 使用GLOB函数将src目录下的所有.c源文件存储到SRC变量中。...target_link_libraries 函数调用 这行代码用于将目标链接到所需的库。这里链接了SDL2的多个库(如SDL2::Main, SDL2::Net等)以及m库(通常是数学库)。...确保你和你的朋友在同一网络中,并获取彼此的IP地址。然后,通过在命令行参数中指定IP地址来连接对方。例如: .
SDL 下载安装 在 Mac 上下载 SDL 很简单,直接 brew install sdl2 注意,这里下载的是 SDL 2.0 版本,如果用如下的命令 brew install sdl 下载的就是...C++ 工程关联 SDL 库 接下来就是在 C++ 工程中关联 SDL 库,便于在工程中引用 SDL 相关头文件。...实现代码如下: target_link_libraries(av-beginner SDL2) target_link_libraries 方法会优先链接动态库,也可以显示指定动态库或者静态库。...完成了 SDL 库的关联,就可以开始真正编写代码了。 代码实践 代码实践主要是验证我们的环境配置有没有问题,运行一个 SDL 函数来试试。..." << endl; SDL_Init(SDL_INIT_EVERYTHING); return 0; } SDL_Init 是 SDL 的初始化函数,可以根据所需功能选择性的初始化也可以全部初始化
介绍 首先这是一个简单的操作,读取在webapp目录下的一个day04.html文件,并将其返回给浏览器 代码如下 // 返回 day04.jsp 文件 response.setContentType... Login 查询资料得知,可能是Tomcat服务器编码配置问题 TOmcat的配置文件...server.xml其中的一部分 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000"...URIEncoding="UTF-8" /> 也设置为了utf8格式,还是乱码 经过检测,发现将day04.html文件转化为day04.jsp文件解决问题 建议,以后的java...web项目还是使用jsp文件来代替html文件 (有大佬知道解决方案请在评论区留言)
SDL_RenderPresent(): 显示。 上篇文章分析了该流程中的第6个函数SDL_RenderCopy()。本文继续分析该流程中的最后一个函数SDL_RenderPresent()。...OpenGL OpenGL渲染器中相应RenderPresent()的函数是GL_RenderPresent(),它的源码例如以下所看到的(位于render\opengl\SDL_render_gl.c...关键的显示函数位于SDL_GL_SwapWindow()函数中。以下看一下SDL_GL_SwapWindow()的代码(位于video\SDL_video.c。感觉这里调用关系略微有点乱…)。...SDL_GL_SwapWindow()调用了SDL_VideoDevice的GL_SwapWindow()函数。 我们看一下在“Windows视频驱动”的情况下,该函数的代码。...在“Windows视频驱动”的情况下,调用GL_SwapWindow()实际上是调用了WIN_GL_SwapWindow()函数。
前言 在我们学习如何使用FFmpeg开发一款简单播放器的时候,ffplay一定是一个非常不错的参考例子 如果能搭载ffplay的源码联调环境来进行断点调试的话,相信对我们理解ffplay一定能起到事半功倍的效果...最新版本5.1.2的原因是ffplay的编译依赖sdl2,通过brew安装sdl2的版本为最新的2.24.0,只有FFmpeg5.1.2+的版本才能匹配上 (ffplay的编译依赖sdl2) (sdl2...的版本要求) 编译ffplay 首先需要安装sdl2 brew install sdl2 然后进入下载的FFmpeg5.1.2的源码根目录,在终端中执行: ..../configure --enable-debug=3 --enable-ffplay --enable-sdl2 --disable-optimizations --disable-asm --enable-debug...如果存在就表示环境准备好了 如果中途有报错,可以查看ffbuild/config.log进行排查 接下来进行编译 make clean make -j8 编译产物 导入xcode 新建工程 语言选择C 引用
注意:这里使用的是 SDL2-2.0.9 解压完后的文件目录.png 我们在根目录里面有看到,SDL2的源码,已经为我们配置好了多种的编译环境。包括Cmake 和Android.mk文件。...在SDL2源码目录下的CMakeLists.txt中,找到USING_GENERATED_CONFIG_H, 并且修改成如下 # 把原来的注释掉 # add_definitions(-DUSING_GENERATED_CONFIG_H...这个对我们基本上用不到。所以其实去掉也无所谓。 直接在SDL_config_android.h文件中把它注释掉 然后对应的,把对应Java代码的初始化注释掉。...方案2:将hidapi也添加入编译中 找到对应的目录,添加CMakeList.txt 添加自己的CMakeList.png 我们看到这儿本来是有Android.mk文件的。...,添加了 判断,如果是Android的话,就添加hidapi库,并将其连接到SDL2库中。
目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。下面主要介绍一下在Windows下搭建SDL2开发环境的过程。...VS中的项目配置 SDL2说白了其实只是一个C语言库,因此配置他就跟配置其他任意的库一样,主要分为三步: 一、包含必需的头文件和库文件 因为我们需要能够include进SDL2的头文件,并且找到对应的实现代码...二、添加编译指令 既然用了第三方的库,那么我们在进行编译的时候肯定需要加上-l指令,从而指定编译进去的静态链接库。...而按照微软一贯的保姆式作风,在VS中并不需要我们手动输入编译指令,只需要修改一下编译配置,然后就能直接编译了。...这个配置在项目->属性->配置属性->链接器->输入->附加依赖项< 这里: 在这里面加上那三个静态库的名字即可(SDL2.lib、SDL2main.lib、SDL2test.lib)。
在使用SDL2+OpenGL+nanovg的过程中,踩了一些坑,这里做个笔记,给需要的朋友参考: 一、在MacPro上显示模糊的问题。...使用低级的OpenGL去绘图是一个比较麻烦的事情。在LFTK中,采用了nanovg矢量图绘图函数库,nanovg缺省使用的GLFW,要移植到SDL2上也不难。...三、Windows下的OpenGL 在MacPro和Ubuntu下测试没有问题,在Window测试时发现一些OpenGL函数找不到,明明已经链接了opengl32.dll啊。...网上的方案多是基于GLUT和GLFW在Windows下做OpenGL开发的,SDL则没有找到相关资料,只好再去研读GLFW,看能不能从中借用部分代码。...总结 以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对ZaLou.Cn的支持。如果你想了解更多相关内容请查看下面相关链接
例如,我们可以在Word中放置一个来自Excel的表,并且可以随着Excel中该表的数据变化而动态更新。...这需要在Word中创建一个对Excel表的动态链接,允许Word文档自动获取Excel表的变化并更新数据。 例如下图1所示的工作表,其中放置了一个Excel表,复制该表。 ?...图2 在弹出的“选择性粘贴”对话框中,选取“粘贴链接”并选择“形式”列表框中的“Microsoft Excel工作表对象”,如下图3所示。 ?...在Word文档显示的表中,单击右键,选择快捷菜单中的“链接Worksheet对象——链接”命令,如下图8所示, ? 图8 打开“链接”对话框,选取“手动更新”选项,如下图9所示。 ?...图9 这样,每次要更新数据时,在表中单击右键,在快捷菜单中选择“更新链接”即可,如下图10所示。 ? 图10 实际上,当创建对单元格区域的链接后,Word将会存储源数据字段的信息,然后显示链接的数据。
CMake 工程配置 对 av-beginner 项目的 CMake 配置做了一些改动,创建了一个 cmake_utils 的目录,在该目录下创建了一个 CMakeLists.txt ,里面存放一些自定义的函数...,专门用来做开源库的链接加载工作,如下图红框内容所示: 定义了一个 init_path 的宏,宏的功能和函数是有些类似的,在里面定义了不同开源库的路径变量,后续只要引用这些变量就好了。...Android NDK 开发之 CMake 必知必会 当下载了 SDL_Image 之后,找到它的路径,把它的库加载到 CMake 链接目录中来,也就是要调用 link_directories 方法,这里同样可以定义一个宏...对于 SDL 库或者其他库,也可以创建类似的宏,具体在源码中能看到。...在完成了 SDL_Image 的 CMake 配置之后,就需要在工程的主 CMakeLists.txt 文件中把它包含进去,现在还只是在 cmake_utils 目录中,这样是引用不到宏的。
NameError 在python中,如果引用的变量未定义,则会报告NameError: name '变量名' is not defined。 如下代码抛出了一个异常: !...提示: 一般来说,在python中,需要保证变量的定义在使用的前面。...IndexError 在python中,如果list、tuple中的元素被引用的索引值超过了元素的个数,则会报告IndexError: list index out of range。...原因: list的索引值超过了list元素的个数。 KeyError 在python中,如果dict中的key不存在,则会报告KeyError: 'key'。 如下代码抛出了一个异常: !...原因: dict中不存在address这个key。 TypeError 在python中,如果一个对象不是内置对象的实例,则会报告TypeError。 如下代码抛出了一个异常: !
六、VS 项目中引用 FFmpeg 库 编译好 FFmpeg 库后,下面我们就可以在 VS 中引用它了。...) 函数中调用 FFmpeg API 了,如调用 FFmpeg 库中的日志函数: #include extern "C" { #include "libavcodec/avcodec.h...\n"); return 0; } 上述代码中,调用了 FFmpeg 中的两个 API,分别是 av_log_set_level(…) 以及 av_log(…),这两个函数都是 FFmpeg...checkout release-2.26.x 需要注意的是,SDL现在已经发布了3.0版本,而ffmpeg目前只能用SDL2版本,所以在拉取代码后,需要切换到2.26这个版本 可以到这里自取 SDL...-2.26.x 链接:https://pan.baidu.com/s/1n_wMhIsBb9yaDhAL8NHZ8Q 提取码:qqbh ②、下载 CMake 下载好 SDL2 源码后,我们需要使用
我们将把它们转换为优化的格式来加快它们的速度。 SDL2还为SDL表面提供了一个新的功能,叫做软拉伸,它允许你将图像按比例放大到不同的尺寸进行blit。...在本教程中,我们将把一张只有屏幕一半大小的图像拉伸到全尺寸。...); } return optimizedSurface; } 回到我们的图像加载函数中,我们要做一些修改,以便在加载时转换表面。...在函数的顶部,我们几乎像之前的教程一样加载图像,但我们也声明一个指向最终优化图像的指针。 如果前面几行代码中图像加载成功,我们就优化我们加载的表面。...这意味着我们必须释放原始加载的表面,否则我们将在内存中拥有两个相同图像的副本。 在图像加载和转换之后,我们返回最终优化后的图像。
SDL2 Android.mk 以下是SDL2源码中Android.mk文件: ?...重点讲解LOCAL_SRC_FILES LOCAL_SRC_FILES变量是最难写、也最最重要的配置,甚至可以说,写Android.mk就是在写LOCAL_SRC_FILES也不为过。...为了优雅的配置好它,这里使用了2个函数。 wildcard函数:批量获取所有文件,仅有一个正则语法参数。 subst函数:字符串替换。...demo 这还是SDL2源码里的脚本,如下: ? 讲解 重点就在最后一行,之前的全是配置各种路径。...-APP_MODULES:指明需编译的模块,这里对应Android.mk中的LOCAL_MODULE。
关键字:《金庸群侠传》C++复刻版 这是一个以SDL2为基础实现的2D游戏框架,同时相当于提供了一个使用该框架制作DOS游戏《金庸群侠传》移植版的范例。...2、Save中对所有数据进行了封装,可以较为方便地调用。 3、TextureManger是一个纹理管理器,因为《金庸群侠传》的贴图是含偏移设置的,故有些特殊的地方。...对应在背景中执行,如何画自身,如何处理事件,进入时的处理,退出时的处理。一般来说,衍生类应重写这些函数。其中每个元素可以包含数个子元素,在绘图时子节点也会被自动一一绘出。...三:视频 这是作者编写的一个视频播放器,可以将其编译为动态库,作为SDL2的插件,用于进行视频过场的播放。如果难以处理,可以将预处理定义宏中的WITH_SMALLPOT删除。...VS和GCC中,如果某个库的功能并未被用到,即使其包含在链接选项中,也不会参与实质的链接。 五:abc工程以及资源的保存 abc工程用来转换之前的数据。建议自行调整代码后,使用调试模式执行。
首先判断SDL.h中的版本对应的值在通过计算后是否在0x010201至0x010300之间,如果是的话SDL版本才会正确的被执行,否则这个测试项将会出现错误,生成的config.log中有对应的错误记录...当没有安装SDL库时,config.log中相关的错误信息如下 点击(此处)折叠或打开 check_pkg_config sdl SDL_events.h SDL_PollEvent...false --exists --print-errors sdl 当安装的SDL版本库不对应时,config.log中对应的错误信息如下 点击(此处)折叠或打开...<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x010300" 根据对ffplay与ffmpeg中libavdevice中SDL相关的接口与SDL1...和SDL2的初步对比,发现SDL2与SDL1差别还是蛮大的,要改libavdevice也是力气活,所以如果SDL1不影响太多的话,还是用SDL1吧
前言 之前的SDL的两篇文章我向大家介绍了如何编译使用 SDL,以及如何才能让窗口显示出来。想了解相关内容的同学可以点击下面的链接查看相关内容。...有哪些基本图形可以绘制 SDL中绘制基本图形的 API并不多,主要是 点、线、矩形。其它图形都可以通过 点、线、矩形组合出来。 设置颜色:在绘制图形前,要设置一下画笔的色彩。...Uint8 g, Uint8 b, Uint8 a) 该函数中的参数...count) 该函数会将使用两个相邻的点之间进行连线。...SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255); 该函数是设置画笔颜色,也就是说我们想画出什么颜色的图形,只要用这个函数设置一下,再使用画点、画线的API
本文通过使用一个yuv图片放大和显示的例子,学习 opencv 的 resize 、SDL2显示yuv图片, argparse命令解析。...System32目录; SDL2.dll也可以放到其他目录,但python代码中在 import sdl2 前需要加上 os.environ["PYSDL2_DLL_PATH"] = "c:\\directory...(若能 pip install pysdl2,跳过步骤C)在 Anaconda Prompt 命令行中,cd 到 pysdl2 的解压目录(如果在其他目录,install 时会提示找不到一些文件),输入...import sdl2 sdl2.SDL_Init(sdl2.SDL_INIT_VIDEO) 2. 使用 PySDL2 显示 接口函数 2.1. 初始化SDL函数 初始化过程类似c/c++中的接口。...主函数 import sdl2 import numpy as np import ctypes import cv2 as cv import argparse import gc # yuv resize
领取专属 10元无门槛券
手把手带您无忧上云