SDL 2.0已编译,但未能运行
SDL 2.0 compiles, but failt to run
Im在Xubuntu 64位上使用最新的SDL 2.0版本。我通过提供的安装脚本安装了源代码。
编译效果很好,但是当试图打开字体或图像(无论其扩展名如何)时,它总是无法打开。
#include <iostream>
#include <SDL2/SDL.h>
#include <SDL2/SDL_ttf.h>
int main (int argc, char *argvp[])
{
if (SDL_Init(SDL_INIT_EVERYTHING) == -1)
{
cout << SDL_GetError() << endl;
}
if (TTF_Init() == -1)
{
std::cout << TTF_GetError() << std::endl;
return 2;
}
TTF_Font *font1 = NULL;
font1 = TTF_OpenFont("SourceSansPro-Regular.ttf", 20);
if (font1 == NULL)
{
std::cout << "ERROR OPENING FONT = " << TTF_GetError() << std::endl;
}
TTF_CloseFont(font1);
SDL_Quit();
return 0;
}
我用编译
g++ -Wall fontTEST.cpp -o TEST -lSDL2 -lSDL_ttf (NOTE that SDL_ttf installs as such, not as SDL2_ttf)
并得到以下错误:Failed to load font: 0 Couldn't load font file
图像也会出现这种情况。我已经尝试过使用不同的字体和图像,显然,如果我使用SDL1.2编译,它是有效的,只是不使用2.0。此外,为什么提供的安装脚本安装lib并将文件夹包括在/user/local/中?
我将它们移到/usr/,但问题仍然存在。
记住以下内容:
- 在Unix上,文件路径区分大小写
- 正如Xonar的评论中所说,波浪号'~'扩展是一个shell功能,它在C/C++程序中不起作用,你应该使用真实路径
strace日志清楚地表明这条路出了问题。
您应该尝试以下操作:
- 将字体文件重命名为"font.ttf"
- 将其放入/home/user/font.ttf
- 使用"/home/user/font.ttf"作为代码中的路径
相关文章:
- 如何在linux终端中同时编译和运行c++代码
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- 是否可以在编译时初始化数组,以便在运行时不会花费时间?
- 尝试用java代码编译和运行c++代码
- 热键/按钮,根据需要进行编译,但不运行(在F5和Ctrl+Shift+B之间)
- 编译并运行后,输出未出现在 Visual Studio 代码中
- 无法使用犰狳运行编译的 cpp 代码,因为 dyld:库未加载
- 运行编译的 a.out 后出现分段错误(核心转储)错误
- 如果使用 PHP 运行编译,则无法分配内存
- msys 和 tdm-gcc:配置错误 - 无法运行 C 编译的程序
- Eclipse CDT - 如何在外部控制台 (cmd.exe) 中运行编译.exe
- 无法在 OSX 上运行编译的 C++ 可执行文件,适用于 Debian
- Linphone编译-配置:错误:无法运行C编译的程序
- 错误0xc000007b:试图在没有VS的计算机上运行编译为Release x86的C++.exe文件
- 在windows上使用oud cmd运行g++编译的文件
- Eclipse CDT 无法在 Windows 中运行编译的可执行文件,并显示错误"terminated, exit value: <some number>"
- 运行编译的c++代码与Rcpp
- "Cannot execute binary file"在 Ubuntu for Windows 平台上使用 Eclipse 运行编译的 c++ 程序时
- 如何在未安装 CUDA 工具包的机器上运行编译的 CUDA 代码?
- visualstudio2010-尝试运行/编译我的c++程序