sdl_net应用程序无法正常启动(0xc000007b)
sdl_net The application was unable to start correctly (0xc000007b)
我正在尝试编译 运行 以下代码:
#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());
}
代码编译正常,但是当我 运行 它时,我得到一个错误:
The application was unable to start correctly (0xc000007b). Click OK to close the application
我之前已经成功编译和 运行 SDL 代码,但这是我第一次尝试 SDL_Net。
我在 Windows 上使用 Code::Blocks 和 MinGW GCC 编译器,我正在使用 SDL 的 x86_64-w64-mingw32 库,这些是我的链接器设置(其中一些是不是立即需要,我知道):
-lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_ttf -lpthread -lSDL2_net
有人知道这里发生了什么吗?
//预计到达时间:
如何解决这个问题而不将我所有的东西都切换到 32 位?
谢谢,
我通过以下方式解决了这个问题:
安装了 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 运行time 二进制文件替换它们,您可以直接在 SDL_Net 主页上下载。
//注意:也许 "i686-w64-mingw32" 开发库二进制文件可以工作...我没有测试它。当“64”以“86”和“686”开头时,我总是感到困惑,而在这些开发库的情况下,另一个选项是 "x86_64-w64-mingw32"...所以哪个是真正的 x64,哪个是真正的 x64一个是 x32?不确定。
- 进行更改后,我的原始 post 不再出现标题错误。相反,现在当我尝试 运行 已编译程序时,我会收到有关缺少 DLL 的错误。此外,这些错误仅在我通过 "debug" 中的可执行文件 运行 程序时发生;当我在 Code::Blocks 中按 "play" 按钮 运行 程序时,错误没有发生。经过一番搜寻,我通过将链接器选项更改为以下内容解决了这个问题:
-lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_ttf -lSDL2_net -static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic
//注:其实我并没有完全理解“-Wl,-Bstatic”和“-Wl,-Bdynamic”的作用。我希望有人能给我解释一下。
希望对大家有所帮助!
我正在尝试编译 运行 以下代码:
#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());
}
代码编译正常,但是当我 运行 它时,我得到一个错误:
The application was unable to start correctly (0xc000007b). Click OK to close the application
我之前已经成功编译和 运行 SDL 代码,但这是我第一次尝试 SDL_Net。
我在 Windows 上使用 Code::Blocks 和 MinGW GCC 编译器,我正在使用 SDL 的 x86_64-w64-mingw32 库,这些是我的链接器设置(其中一些是不是立即需要,我知道):
-lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_ttf -lpthread -lSDL2_net
有人知道这里发生了什么吗?
//预计到达时间:
如何解决这个问题而不将我所有的东西都切换到 32 位?
谢谢,
我通过以下方式解决了这个问题:
安装了 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 运行time 二进制文件替换它们,您可以直接在 SDL_Net 主页上下载。
//注意:也许 "i686-w64-mingw32" 开发库二进制文件可以工作...我没有测试它。当“64”以“86”和“686”开头时,我总是感到困惑,而在这些开发库的情况下,另一个选项是 "x86_64-w64-mingw32"...所以哪个是真正的 x64,哪个是真正的 x64一个是 x32?不确定。
- 进行更改后,我的原始 post 不再出现标题错误。相反,现在当我尝试 运行 已编译程序时,我会收到有关缺少 DLL 的错误。此外,这些错误仅在我通过 "debug" 中的可执行文件 运行 程序时发生;当我在 Code::Blocks 中按 "play" 按钮 运行 程序时,错误没有发生。经过一番搜寻,我通过将链接器选项更改为以下内容解决了这个问题:
-lmingw32 -lSDL2main -lSDL2 -lSDL2_image -lSDL2_ttf -lSDL2_net -static-libgcc -static-libstdc++ -Wl,-Bstatic -lstdc++ -lpthread -Wl,-Bdynamic
//注:其实我并没有完全理解“-Wl,-Bstatic”和“-Wl,-Bdynamic”的作用。我希望有人能给我解释一下。
希望对大家有所帮助!