如何解决“过程入口点SDL_RWclose不能位于动态链接库中”

时间:2019-07-03 00:36:25

标签: c++ mingw sdl sdl-image

我正在尝试使用SDL_image扩展名将png图像绘制到窗口,但这给了我一个“找不到入口点”错误

我正在使用SDL(2.0.9)和SDL_Image(2.0.5) 我已将以下bin文件复制到可执行文件目录中

  • libjpeg-9.dll
  • libpng16-16.dll
  • libtiff-5.dll
  • libwebp-7.dll
  • SDL2.dll
  • SDL2_image.dll
  • zlib1.dll

main.cpp提取

#include <iostream>
#include <SDL.h>
#include <SDL_image.h>

int main( int argc, char* args[] )
{
    SDL_Texture* test_tex;
    SDL_Window* window = NULL;
    SDL_Renderer* renderer;

            if(renderer)
            {
                //Tested blank screen and it works
                /*
                SDL_RenderPresent(renderer);
                SDL_Delay(2000);
                */

                //Trying to use SDL_image and it fails
                SDL_Surface *tmp_surface = IMG_Load("player.png");
                test_tex = SDL_CreateTextureFromSurface(renderer,tmp_surface);
                SDL_FreeSurface(tmp_surface);
                SDL_RenderPresent(renderer);
                SDL_Delay(2000);
            }
...

这样编译

g++ test.cpp ^
-IC:\dev\SDL2-2.0.9\i686-w64-mingw32\include\SDL2 ^
-IC:\dev\SDL2_image-2.0.5\i686-w64-mingw32\include\SDL2 ^
-LC:\dev\SDL2-2.0.9\i686-w64-mingw32\lib ^
-LC:\dev\SDL2_image-2.0.5\i686-w64-mingw32\lib ^
-lmingw32 ^
-lSDL2main ^
-lSDL2 ^
-lSDL2_image ^
-o test

我已经用空白渲染器测试了窗口,并且一切正常,当我将调用添加到IMG_Load时失败了

3 个答案:

答案 0 :(得分:4)

您需要另一个SDL_Image版本。使用SDL_Image(2.0.4)代替(2.0.5)。

您可以在此处获取旧版本:

https://www.libsdl.org/projects/SDL_image/release/?C=M;O=D

(这为我解决了同样的问题)

答案 1 :(得分:3)

2.0.9 32位SDL2.dll给了我VC ++以外的问题。幸运的是,可以使用2.0.10版本进行测试,该版本实际上适用于我的Code :: Blocks编译测试:https://www.libsdl.org/tmp/download-2.0.php

答案 2 :(得分:0)

感谢ThePyramidOfDoom,为我解决了同样的问题:)