sdl_net应用程序无法正确启动(0xc000007b)

时间:2018-05-18 17:49:01

标签: c++ sdl-2 sdl-net

我正在尝试编译并运行以下代码:

#include <iostream>
#include <SDL.h>
#include <SDL_net.h>
#include <cstring>


using namespace std;

int main(int argc, char **argv)
{
    printf("result of SDL_Init is: %i\n",SDL_Init(SDL_INIT_EVERYTHING));
    printf("result of SDLNet_Init is: %i\n",SDLNet_Init());
}

代码编译得很好,但是当我运行它时出现错误:

  

应用程序无法正确启动(0xc000007b)。单击“确定”关闭应用程序

之前我已经成功编译并运行了SDL代码,但这是我第一次尝试使用SDL_Net。

我在Windows上使用Code :: Blocks和MinGW GCC编译器,我使用的是x86_64-w64-mingw32库用于SDL,这些是我的链接器设置(其中一些不是立即需要的,我知道) :

-lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_ttf -lpthread -lSDL2_net

有谁知道这里发生了什么?

// ETA:

如何在不将所有内容转换为32位的情况下解决此问题

谢谢,

1 个答案:

答案 0 :(得分:1)

我通过以下方式解决了这个问题:

  1. 安装了mingw-w64而不是mingw32并将其设置为我的编译器。我不得不更改大多数工具链可执行文件,以便他们使用&#34; x86_64-w64-mingw32指示文件 - &#34;在名称中(例如,&#34; gcc.exe&#34;已更改为&#34; x86_64-w64-mingw32-gcc.exe&#34;)。资源编译器和Make程序名称没有变化。

  2. 使用SDL_Net开发库的x86_x64-mingw32文件夹中的二进制文件不起作用。我不得不用可以直接在SDL_Net主页上下载的SDL2_net-2.0.1-win32-x64运行时二进制文件替换它们。

  3. //注意:也许&#34; i686-w64-mingw32&#34;开发库二进制文件会有效...我没有测试它。当&#34; 64&#34;时,我总是感到困惑。以&#34; 86&#34;开头。和#34; 686&#34;,在这些开发库的情况下,另一个选项是&#34; x86_64-w64-mingw32&#34; ....所以哪一个真的是x64,哪一个是X32?不确定。

    1. 在我做了这个改变后,我在原帖中停止了名义错误。相反,现在当我尝试运行已编译的程序时,我会收到有关丢失DLL的错误。此外,这些错误只发生在我通过&#34; debug&#34 ;;中的可执行文件运行程序时。当我通过按下&#34;播放&#34;来运行程序时,错误并没有发生。 Code :: Blocks中的按钮。经过一些搜索,我通过将链接器选项更改为以下内容解决了这个问题:
    2.   

      -lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_ttf -lSDL2_net -static-libgcc -static-libstdc ++ -Wl,-Bstatic -lstdc ++ -lpthread -Wl,-Bdynamic

      //注意:我实际上并不完全明白&#34; -Wl,-Bstatic&#34;和&#34; -Wl,-Bdynamic&#34;做。我希望有人能向我解释一下。

      我希望这有助于某人!