标签: sdl-image

如何在cmake中使用SDL2和SDL_image

我在寻找编译使用C++程序最简单的方法SDL2SDL_image与cmake的.

经过几个小时的搜索后,这是我最好的尝试:

的CMakeLists.txt

project(shooter-cmake2)

cmake_minimum_required(VERSION 2.8)

set(SOURCES
shooter.cpp
classes.cpp
utils.cpp
)

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x")

add_executable(${PROJECT_NAME} ${SOURCES})

INCLUDE(FindPkgConfig)
PKG_SEARCH_MODULE(SDL2 REQUIRED sdl2)
PKG_SEARCH_MODULE(SDL2_image REQUIRED sdl2_image)
INCLUDE_DIRECTORIES(${SDL2_INCLUDE_DIRS} ${SDL2IMAGE_INCLUDE_DIR})
TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${SDL2_LIBRARIES} ${SDL2IMAGE_LIBRARY})
Run Code Online (Sandbox Code Playgroud)

我收到这些错误:

In function `loadTexture(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, SDL_Renderer*)':
undefined reference to `IMG_LoadTexture'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

这是函数调用:

#include "SDL.h"
#include "SDL_image.h"

SDL_Texture* loadTexture(const std::string &file, SDL_Renderer *ren){
    SDL_Texture *texture = IMG_LoadTexture(ren, file.c_str());
    texture != nullptr or die("LoadTexture");
    return texture;
}
Run Code Online (Sandbox Code Playgroud)

我很绝望.请帮我!谢谢!:)

c++ sdl sdl-image cmake sdl-2

24
推荐指数
4
解决办法
5万
查看次数

如何在Windows上静态编译SDL游戏

我一直试图为我的游戏生成一个静态链接的"单二进制"版本的Windows.我想链接sdl,sdl_image和sdl_mixer,这反过来又引入了一些支持库.不幸的是我还没有找到一种方法来使用cygwin/mingw/gcc来编译和链接.据我所知,所有现有的公共版本只是共享库/ dll.

请注意,我不是在谈论许可.源将是开放的,因此sdl的GPL/LGPLness无关紧要.

windows sdl sdl-image sdl-mixer

14
推荐指数
1
解决办法
2万
查看次数

C++:库SDL_image.h中的奇怪错误"extern之前的预期初始化程序"

我目前正在尝试使用SDL和Box2D进行简单的游戏.不幸的是,我添加的代码使角色拍摄proyectiles非常麻烦我甚至无法开始计算错误.为了解决这个问题,我添加了一些代码来显示游戏中的一些调试信息.不幸的是,在处理了所有错误之后,出现了一个奇怪的错误,这个错误在弹出之前没有出现:

/usr/include/SDL/SDL_image.h|34|error: expected initializer before ‘extern’|
||=== Build finished: 1 errors, 0 warnings ===|
Run Code Online (Sandbox Code Playgroud)

SDL_image.h中导致此问题的代码是:

/* Set up for C function definitions, even when using C++ */
#ifdef __cplusplus
extern "C" {
#endif
Run Code Online (Sandbox Code Playgroud)

我不知道是什么原因导致出现此错误消息,或者如何解决此问题.我的代码上没有错误消息.我不认为图书馆有任何问题,因为我做的其他游戏只编译文件.这是弹出的唯一错误.

c++ sdl sdl-image

8
推荐指数
1
解决办法
1万
查看次数

使用.reset()释放具有唯一所有权的boost :: shared_ptr

我将一个object(TTF_Font)存储在shared_ptr从第三方API提供给我的对象中.我不能在对象上使用new或delete,因此shared_ptr也提供了一个"freeing"仿函数.

// Functor
struct CloseFont
{
    void operator()(TTF_Font* font) const
    {
        if(font != NULL) {
            TTF_CloseFont(font);
        }
    }
};

boost::shared_ptr<TTF_Font> screenFont;

screenFont = boost::shared_ptr<TTF_Font>( TTF_OpenFont("slkscr.ttf", 8), CloseFont() );
Run Code Online (Sandbox Code Playgroud)

如果,稍后,我需要明确释放此对象,这样做是正确的:

screenFont.reset();
Run Code Online (Sandbox Code Playgroud)

然后让screenFont(实际shared_ptr物体)自然地被摧毁?

c++ boost memory-management sdl-image

7
推荐指数
1
解决办法
2万
查看次数

未找到 SDL2_image

我正在尝试编译以下具有标题的代码:

#include <SDL2/SDL.h>
#include <SDL2_image/SDL_image.h>
Run Code Online (Sandbox Code Playgroud)

但是在运行以下 makefile 后:

g++ -std=c++11 src/main.cpp -lSDL2 -lSDL2_image
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

fatal error: SDL2_image/SDL_image.h: No such file or directory
#include <SDL2_image/SDL_image.h>
Run Code Online (Sandbox Code Playgroud)

有什么建议?不完全确定我安装的 SDL_image。我在 Ubuntu 上运行这个。

c++ ubuntu sdl sdl-image sdl-2

7
推荐指数
2
解决办法
1万
查看次数

SDL_Image IMG_Load在png上失败:"加载libpng16-16.dll失败:"

每当我尝试使用SDL_Image的IMG_Load函数加载PNG时,它都会给出错误Failed loading libpng16-16.dll:.我在正确的路径中有所有正确的dll,我可以使用SDL_Image的其他部分,但由于某种原因,它无法加载libpng dll.我怎样才能解决这个问题?任何帮助表示赞赏.

windows png load sdl-image sdl-2

6
推荐指数
2
解决办法
1万
查看次数

“未定义引用‘IMG_Load’”CodeBlocks 和 SDL_Image 错误

我正在通过 Lazy Foo 的教程学习 SDL,但我无法继续进行,因为 IMG_Load 似乎不起作用。我尝试按照他说的那样进行设置,但它不起作用。我将所有包含文件放入 include 文件夹中,将所有 lib 文件放入 lib 文件夹中。我发现lib文件夹中有x86和x64文件夹。当我尝试 x64 时(因为我有一个 64 位系统),一切都工作正常,CodeBlocks 甚至告诉我建议(比如当我写“img”时,它显示了一个建议“IMG_Load”(这意味着库已初始化?)) ,但是当我编译代码时,会发生这种情况: http: //puu.sh/3Eqa5.png。当我尝试使用 x86 版本时,出现完全相同的错误。

我在网上查了一下,只找到了一些线索,但大多数都被放弃了。我最接近回答我的问题的是: http: //www.dreamincode.net/forums/topic/118299-sdl-image-error-sdl/,但这家伙通过下载一个Linux可以使用的问题解决了他的问题,不是Windows。}

我运行的是 Windows 7 64 位、CodeBlocks 12.11、SDL 1.2.15 和 SDL_Image 1.2.12。

我真的不知道问题是什么!

c sdl sdl-image codeblocks undefined-reference

5
推荐指数
1
解决办法
1万
查看次数

如何与 gcc 和 SDL_image 库链接?

我有以下脚本:

gcc -I /Library/Frameworks/SDL2.framework/Headers \
    -F /Library/Frameworks/ -framework SDL2 test.c
Run Code Online (Sandbox Code Playgroud)

成功编译了以下源代码:

#include <SDL.h>
//#include "SDL_image.h"

int init();
int loadMedia();
void close();

SDL_Window* gWindow = NULL;
SDL_Surface* gScreenSurface = NULL;
SDL_Surface* gHelloWorld = NULL;

int init()
{
    int success = 1;

    if(SDL_Init(SDL_INIT_VIDEO) < 0)
    {
        printf("SDL could not initialize! SDL_Error: %s\n", SDL_GetError());
    }
}

int main(int argc, char* args[])
{
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何使用添加的库 SDL_image 来编译它?会是这样的吗?

gcc -I /Library/Frameworks/SDL2.framework/Headers \
    -I /Library/Frameworks/SDL_image.framework/Headers \
    -F /Library/Frameworks/ -framework SDL2 test.c
Run Code Online (Sandbox Code Playgroud)

当我尝试这样做时,我收到以下错误:

In file …
Run Code Online (Sandbox Code Playgroud)

c gcc sdl sdl-image

5
推荐指数
1
解决办法
5719
查看次数

在此范围 SDL 2 中未声明“IMG_Load”

我正在尝试使用 SDL 制作一个应用程序,我想在我的窗口上添加一个图标,但是当我编译时,我收到此错误:

\n\n
error: \xe2\x80\x98IMG_Load\xe2\x80\x99 was not declared in this scope\n  SDL_Surface * icon_surface = IMG_Load(icon);\n                                            ^\n
Run Code Online (Sandbox Code Playgroud)\n\n

我正在使用cmakemake进行编译,这里是CMakeLists.txt

\n\n
cmake_minimum_required (VERSION 2.6)\n\nset(PROJECT_NAME "Engine")\n\n\nproject (${PROJECT_NAME})\n\n\nSET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c++0x")\n\nif( CMAKE_SIZEOF_VOID_P EQUAL 8 )\n\n    MESSAGE( "64 bits compiler detected" )\n    SET( EX_PLATFORM 64 )\n    SET( EX_PLATFORM_NAME "x64" )\n\n    SET( EXECUTABLE_NAME ${PROJECT_NAME}-x64 )\n\nelse( CMAKE_SIZEOF_VOID_P EQUAL 8 ) \n\n    MESSAGE( "32 bits compiler detected" )\n    SET( EX_PLATFORM 32 )\n    SET( EX_PLATFORM_NAME "x86" )\n\n    SET( EXECUTABLE_NAME ${PROJECT_NAME}-x86 )\n\nendif( CMAKE_SIZEOF_VOID_P EQUAL …
Run Code Online (Sandbox Code Playgroud)

c++ sdl-image sdl-2

5
推荐指数
2
解决办法
6390
查看次数

SDL在iOS上保存截图

我正在尝试将SDL的"窗口"中的屏幕或框架保存到PNG文件中,因此我正在使用SDL_image库.我的代码如下

IMG_Init(Int32(IMG_INIT_PNG.rawValue))
let screenShot = SDL_CreateRGBSurface(0, 640, 480, 32, 0, 0, 0, 0)
SDL_SetRenderTarget(renderer, texture)
SDL_RenderReadPixels(renderer, nil, Uint32(SDL_PIXELFORMAT_ARGB8888), screenShot?.pointee.pixels, (screenShot?.pointee.pitch)!)
let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] as String
IMG_SavePNG(screenShot, "\(documentsPath)/image.png")
SDL_FreeSurface(screenShot)
Run Code Online (Sandbox Code Playgroud)

但是image.png没有得救.如果有人可以带领或帮助我.谢谢!

附加代码,保存的图像只是黑色

IMG_Init(Int32(IMG_INIT_PNG.rawValue))
let screenShot = SDL_CreateRGBSurface(Uint32(SDL_SWSURFACE), 640, 480, 32, 0, 0, 0, 0)
// SDL_SetRenderTarget(renderer, texture)
SDL_RenderReadPixels(renderer, nil, Uint32(SDL_PIXELFORMAT_ARGB8888), screenShot?.pointee.pixels, (screenShot?.pointee.pitch)!)
// Save to documents directory
let fileManager = FileManager.default
do {
    let documentDirectory = try fileManager.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: true) …
Run Code Online (Sandbox Code Playgroud)

sdl ffmpeg sdl-image ios swift

5
推荐指数
1
解决办法
168
查看次数