SFML库:奇怪的错误
SFML library : strange error
我正在学习SFML库,并从教程中选择了一个代码。它打开了一个窗口,应该可以让我再次关闭它,但当我关闭它时,它显示
Debug Error!
Run-Time Check Failure #2 - stack around variable 'App' was corrupted.
and then the console stops working.
this is my code:
int main()
{
// Create the main window
sf::Window App(sf::VideoMode(800, 600, 32), "SFML Events");
while (App.IsOpened())
{
// Process events
sf::Event Event;
while (App.GetEvent(Event))
{
// Close window : exit
if (Event.Type == sf::Event::Closed)
App.Close();
// Escape key : exit
if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
App.Close();
}
// Display window on screen
App.Display();
}
return EXIT_SUCCESS;// = return 0
}
链接到调试库的是
sfml-system.lib
sfml-window.lib
sfml-system-d.lib//these are debug files
sfml-window-d.lib
如果我修改了前2个并构建了我的程序,它不会给出错误,但当我打开它时,它会说:
应用程序无法正确启动(0xc0150002)。单击"确定"关闭应用程序
我有一台64位的电脑。在微软的vc++2010中,我可以做构建解决方案或调试,我总是做构建方案。
我正在以发布模式进行构建,但我也尝试过这两种模式,但它们都不起的作用
有人能告诉我我能做些什么来防止这种情况发生吗?或者这是怎么发生的。
对于这些应用程序启动问题,最好检查依赖关系闭包中的所有dll是否都可以访问,也就是说,它们都在搜索路径中吗?我们通常使用依赖助行器来检查缺少哪些dll,或者使用gflags进行运行时诊断
虽然把dll和exe放在同一个文件夹中是可行的,但它的伸缩性不好,我通常做的一种方法是把库路径放在path环境变量中。
需要注意的是,sfml为vs2005和vs2008提供了预构建的binrary,因为您使用的是vs2010,底层的c运行库(msvcrt)不同,可能会出现潜在的问题-您最好使用vs2010或使用vs2005/vs2008从源代码构建sfml,只是为了保持一致的
如果您不想使用DLL并想将SFML编译成exe,下面是教程:2http://www.sfml-dev.org/tutorials/2.0/start-vc.php您需要添加预处理器指令SFML_STATIC,并将您在程序中使用的其他库包含到链接器->输入
当我第一次使用这个(以及等效的libs)时,我也遇到了一些相关的问题。以下是一些要点:
- 不要使用预编译库/dlls。学习如何使用CMake、boost_build(boost库)、Scons(mongoDB)等,并根据当前使用的编译器/平台构建库(当然,如果有这种可能性的话)。经过一段时间,这个过程变得非常简单,这将为以后的其他项目节省大量时间
- 阅读关于制作一个简单项目的SFML教程。它们易于阅读和理解。也可以尝试使用CMake生成示例,并构建它们以了解它们是如何工作的。另一个很好的教程是关于SFML编程的书(这本书对使用C++11有很大的推动作用,我认为这很好)
- 如前所述,如果不想使用DLL,请将SFML_STATIC添加到"预处理器定义"中,我认为最好在链接器选项中设置"Windows(/SUBSYSTEM:Windows)"(如果我从"然后控制台停止工作"语句中正确理解)
- 最好将libsndfile-1.dll和openal32.dll放在生成应用程序的release/debug文件夹中,因为我看到VC++在从提供的路径中查找dll时有不好的行为
- 如何修复sfml c++代码编译错误
- SFML:错误:")"标记之前的预期主表达式
- SFML 库 - 在 MinGW 构建期间未找到错误
- 编译器现在遵循C++14标准,我的项目不再编译神秘的SFML错误
- 将 SFML 用于代码块C++出现错误库 SFML
- 使用纯 CMake 构建 SFML 时出现运行时错误
- 使用 SFML 绘制曲线会给出错误的形状
- SFML 2.4.2 - 绘制文本时出现分段错误
- SFML C++中的生成错误
- 安装 SFML 后 Visual Studio 2015 中出现错误
- SFML 加载从文件不起作用,奇怪的错误
- 当我尝试绘制 sf::Text 对象时,SFML 中的分段错误
- 内部编译器错误Visual Studio Community 2017与SFML API
- 游戏引擎 SFML C++错误
- SFML UdpSockets没有错误地发送/接收?
- Python 扩展中错误,C++ 中的 SFML
- SFML: dyld:即使更新了库路径,库也未加载错误
- SFML 中的分段错误 调用 sf::窗口::关闭后
- 链接到SFML的未解决的外部错误(SFML 2.2,Visual Studio Community 2013)
- 致命错误:SFML/Graphics.hpp: no such file or directory exists