1

我使用 SDL 编写了一个简单的应用程序,它在 Windows 8(64 位)上显示一个简单的窗口。我第一次使用 Win32 配置(默认配置)编译并执行了我的代码,程序运行良好。现在我想进行相同的执行,但这次使用 x64 配置。因此,我在项目属性中使用“配置管理器”配置了 Visual,并在链接器中选择 x64 库更改了我的 SDL.lib 和 SDLmain.lib。项目编译正常,但执行失败,说明应用程序无法正常启动。这是消息的屏幕(每次执行时内存地址始终相同):

在此处输入图像描述

还有我的 C++ 代码:

#include <iostream>
#include <SDL/SDL.h>
#include <GL/glew.h>
#include <GL/glu.h>

#define WIDTH 500
#define HEIGHT 500

static float angle = 0.0f;

static void eventListener(SDL_Event *pEvent, bool *pContinue)
{
    while (SDL_PollEvent(pEvent))
    {
        switch(pEvent->type)
        {
            case SDL_QUIT:
                *pContinue = false;
                break;
            case SDL_KEYDOWN:
                switch (pEvent->key.keysym.sym)
                {
                    case SDLK_ESCAPE:
                        *pContinue = false;
                        break;
                }
            break;
        }
    }
}

#undef main

int main(void)
{
    SDL_Event myEvent;
    bool isAlive = true;

    SDL_Init(SDL_INIT_VIDEO);
    SDL_WM_SetCaption("Simple SDL window", NULL);
    SDL_SetVideoMode(WIDTH, HEIGHT, 32, SDL_OPENGL);

    while (isAlive == true)
    {
        eventListener(&myEvent, &isAlive);
    }
    SDL_Quit();
    return (0);
}

我不明白这条不准确的信息。但是,链接到我的项目的 x64 SDL 库似乎是正确的,因为编译正常。所以我想知道这里发生了什么。有没有人遇到过同样的问题?

4

1 回答 1

1

刚刚搜索了你的错误信息,它说这个错误代码(0x0c000007b)的意思是INVALID_IMAGE_FORMAT

这意味着您正在混合 32 位和 64 位二进制文​​件,或者您的二进制文件已损坏。尝试将二进制文件和依赖项放在同一个文件夹中并运行应用程序。如果错误继续存在,则您的库之一必须已损坏。否则,这是 Windows 为编译的二进制文件的不同平台加载库的问题。

于 2013-07-27T23:59:29.737 回答