运行使用 i586-mingw32msvc-g++ 和 SFML 编译的 .exe 时出错

运行使用 i586-mingw32msvc-g++ 和 SFML 编译的 .exe 时出错

好吧,我现在正在与 WINE 和 MinGW32 作斗争。所以我有一个文件,sortem.cpp它是用 Makefile 编译的,并且链接起来,所有这些都来自该 Makefile。

排序工具.cpp

#include <windows.h>
#include <iostream>
#include <string>
#include <SFML/System.hpp>
#include <SFML/Window.hpp>
#include <SFML/Audio.hpp>
#include <SFML/Graphics.hpp>

int main ()
{
    sf::RenderWindow window;
    window.create(sf::VideoMode(720,480),"Sort 'em!");
    while (window.isOpen())
    {
        sf::Event event;
        while (window.pollEvent(event))
            {
                window.clear();
                switch (event.type)
                {
                    case sf::Event::Closed:
                        window.close();
                }
                window.display();
            }
    }
    return 0;
}

Makefile

LD = ../bin
LIBS= $(LD)/sfml-window-2.dll $(LD)/sfml-system-2.dll $(LD)/sfml-graphics-2.dll $(LD)/sfml-network-2.dll $(LD)/sfml-audio-2.dll
OBJECTS= sortem.o
CXX= i586-mingw32msvc-g++
all: sortem.exe

sortem.exe: $(OBJECTS)
     $(CXX) -o ../bin/sortem.exe $(OBJECTS) $(LIBS)

%.o: %.cpp 
    $(CXX) -c $<

clean:
     rm *.o 

因此,程序可以完美编译,但sortem.exe使用 WINE 运行时,程序提示必须退出。我单击“显示详细信息”,弹出此信息。Unhandled exception: page fault on write access to 0x00000000 in 32-bit code (0x0046f4c6).还有许多十六进制转储。我真的不知道我做错了什么,也许 SFML 库不是最新的?但那会给我一个编译错误,而不是运行时错误……非常感谢大家的帮助。

答案1

最后,我发现最好的解决方案是在 Wine 上安装 MinGW 并从 Wine 运行 g++.exe。它确实非常有效,安装完成后不会出现任何问题。

相关内容