sdl_net应用程序无法正确启动(0xc000007b)[重复]

Posted

技术标签:

【中文标题】sdl_net应用程序无法正确启动(0xc000007b)[重复]【英文标题】:sdl_net The application was unable to start correctly (0xc000007b) [duplicate] 【发布时间】:2018-05-18 17:49:00 【问题描述】:

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

#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。

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

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

有人知道这里发生了什么吗?

//预计到达时间:

如何解决这个问题不将我所有的东西都切换到 32 位?

谢谢,

【问题讨论】:

Debugging load time error in C++ SDL2 program compiled with VS2015 on Win10 和 ***.com/questions/49559675/… 的可能重复 感谢您的链接。这些线程中的解决方案涉及将应用程序更改为 32 位。如果我想要 64 位应用程序怎么办? 好的,所以我只是尝试将我的编译器切换到MinGW-W64,并将其设置为项目编译器,但编译结果没有变化。 我猜是最后一点,但我注意到我的 Q 已被标记为重复。我问这个模糊的问题“这是怎么回事?”是我的错。这确实在其他地方得到了回答。我希望收到“我该如何解决这个问题?”的答案。 @S.M.这个问题在 //ETA 部分得到了澄清。我不想将我的应用程序切换到 32 位,就像他们在另一篇文章中所做的那样。另外,我正在 Code::Blocks 中编译,其他答案与 VS 有关。这不是重复的,因为这些答案不适用于我的问题。我不知道如何将其取消标记为重复,但请这样做,或者更好地解释我的实际上是如何重复的。 【参考方案1】:

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

    安装了 mingw-w64 而不是 mingw32 并将其设置为我的编译器。我不得不更改大多数工具链可执行文件,以便它们指向名称中带有“x86_64-w64-mingw32-”的文件(例如,“gcc.exe”更改为“x86_64-w64-mingw32-gcc.exe” )。 Resource Compiler 和 Make 程序名称没有改变。

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

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

    进行更改后,我不再在原始帖子中收到名义错误。相反,现在当我尝试运行已编译的程序时,我会收到有关缺少 DLL 的错误。此外,这些错误仅在我通过“调试”中的可执行文件运行程序时发生;当我通过按下 Code::Blocks 中的“播放”按钮运行程序时,错误没有发生。经过一番寻找,我通过将链接器选项更改为以下内容解决了这个问题:

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

//注意:我实际上并不完全理解“-Wl,-Bstatic”和“-Wl,-Bdynamic”的作用。我希望有人能向我解释。

我希望这对某人有帮助!

【讨论】:

嗯。 x86_64-w64-mingw32 库是为 64 位编译的,如果你有 mingw32,它们以前是如何为你工作的。 “那么哪一个是真正的x64,哪一个是x32” x86_64是x64,i686是x32。 观察力不错。是的,我真的不确定,大声笑。

以上是关于sdl_net应用程序无法正确启动(0xc000007b)[重复]的主要内容,如果未能解决你的问题,请参考以下文章

应用程序无法正确启动 0xc00007b

C++ - 无法正确启动 (0xc0150002)

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

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

Code::Blocks 中的 OpenCV:应用程序无法正确启动 (0xc00000be)

在 mingw-w64/msys2 中编​​译的应用程序,“应用程序无法正确启动(0xc00007b”