【问题标题】:Error running .exe compiled with i586-mingw32msvc-g++ and SFML on linux在 linux 上运行使用 i586-mingw32msvc-g++ 和 SFML 编译的 .exe 时出错
【发布时间】:2015-04-08 05:40:51
【问题描述】:

编辑:感谢随机投票者!

编辑 2:感谢 @πάνταῥεῖ 解释问题出了什么问题。运行调试器时,我得到 ​​p>

Program received signal SIGSEGV, Segmentation fault.
0x0046f4c6 in ?? ()

编辑 3:仅当我运行交叉编译程序时才会发生这种情况。如果我在 Windows 中编译该程序并使用 WINE 运行它,则不会发生任何错误。

好吧,我现在正在与 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;
}

生成文件

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 

所以程序编译得很完美,但是当用 WINE 运行sortem.exe 时,它说程序必须退出。我单击“显示详细信息”,然后弹出。 Unhandled exception: page fault on write access to 0x00000000 in 32-bit code (0x0046f4c6).和很多十六进制转储。我真的不知道我做错了什么,也许 SFML 库不是最新的?但这会给我一个编译错误,而不是运行时错误...非常感谢您的帮助,伙计们。

【问题讨论】:

  • 这不是随机投票!您的问题缺少解决问题所需的大量信息。 1st:在调试器中运行程序时,您注意到了什么?第二:堆栈跟踪实际上告诉你什么?等
  • @πάνταῥεῖ 那么像您这样的评论将不胜感激。
  • 一般情况下,您会在事先询问之前完成所有提到的努力。所以没有必要让 cmets 回答不好的问题。
  • @πάνταῥεῖ 那么请原谅我的错误。我现在正在添加一个编辑来解决您的第一个需求。
  • 如果您在 gdb 中输入 btwhere,它将显示您在崩溃之前来自哪里。大多数情况下,这是开始输入up 以查看您的代码实际在做什么的好地方。有些东西显然是 NULL,但不应该是 NULL。

标签: c++ makefile sfml mingw32 wine


【解决方案1】:

这些库是用 MinGW GCC 4.7.1 编译的,我试图用 MinGW GCC 4.8.1 编译我的程序,感谢朋友降级并重新上线。谢谢你们向我展示了如何调试。 和平

【讨论】:

    猜你喜欢
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 2016-06-12
    • 2016-07-09
    • 1970-01-01
    • 2012-10-10
    • 1970-01-01
    • 2019-03-02
    相关资源
    最近更新 更多