加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

由于源文件中存在未执行的代码而运行应用程序时崩溃 – c

发布时间:2020-12-16 03:01:31 所属栏目:百科 来源:网络整理
导读:我正在处理一个相当棘手的问题,我一直在一个礼拜一个礼拜.我打了一个非常坚硬的墙,我的前额伤害了它,所以我希望有人能帮助我. 我正在使用Visual Studio 2005这个项目 – 我已经安装了2008,但遇到类似的问题,当我尝试. 我们目前正在使用OpenCv1.1编译的应用程
我正在处理一个相当棘手的问题,我一直在一个礼拜一个礼拜.我打了一个非常坚硬的墙,我的前额伤害了它,所以我希望有人能帮助我.

我正在使用Visual Studio 2005这个项目 – 我已经安装了2008,但遇到类似的问题,当我尝试.

我们目前正在使用OpenCv1.1编译的应用程序,我正在尝试将其更新为2.2.当我们将静态链接切换到新的libs时,应用程序崩溃 – 但只在释放模式下.所以动态链接和调试都工作正常.

当调用push_back时,崩溃在std :: vector中.

然后我想出了一个示例测试应用程序,它在opencv中运行一些基本代码,工作正常,然后使用完全相同的代码并将其添加到我们的应用程序中.该代码失败.

然后我应用了这个应用程序,所以它没有实例化任何代码对象,除了主gui和1类调用该代码,它仍然崩溃.但是,如果我直接在主gui里运行这个代码,那就行了.

然后,我开始注释大量的应用程序(在不应该被实例化的组件中),最后我下了工作,直到…

我有一个类有一个方法

void Foo()  
{  
    std::vector<int> blah;  
    blah.begin();  
}

如果在标题中定义了此方法,则测试代码可以工作,但是如果该代码在cpp文件中定义,则会崩溃.另外,如果我使用std :: vector< double>而不是int,它也有效.

然后,我尝试使用编译器选项,如果我将优化关闭(/ Od)和Inline Function Expansion设置为Only __inline(/ Ob1),即使该代码位于cpp文件中也是如此.

当然,如果我们回到未知的应用程序并自己更改这些编译器选项,它就会崩溃.

如果有人对此有任何见解,请通知我.

谢谢,
Liron

解决方法

哎呀!解决方案出来了

在我们的解决方案中,我们定义了_SECURE_SCL = 0,但是在第三方库中,我们已经构建了,这是未定义的(这意味着= 1).将_SECURE_SCL设置为0可以显着地减少运行时间,但是必须对所有包含的lib都执行相同的操作,否则它们会以不同的方式处理数组大小.

http://msdn.microsoft.com/en-us/library/aa985896%28v=vs.80%29.aspx

那是一个有趣的一周.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读