2016-02-05 108 views
0

我有一个奇怪的问题出现在wxWidgets库中,并且可以在调试器中轻松地重现。它似乎不是wxWidgets特有的,所以我在这里问这个。调用方法完全不一样

我执行某种非标准的初始化。在这个初始化过程中,调用wxAppBase :: Initialize()方法。 wxAppBase是我自己的App类的基类。在wxAppBase :: Initialize()中调用另一个方法OnInitGui(),这个方法存在于wxAppBase和我的派生类中。

这里是问题:在Debug Build中,everthing运行良好,OnInitGui()按预期执行。但是在Release-build中,我从来没有达到OnInitGui()方法,但最终完全不同于OnInitGui()。所以看起来是非法跳跃。

所有的指针似乎都是有效的,这完全发生在wxWidgets库中。

任何人都知道什么可能会导致这样的行为,以及如何解决这个问题?

欢迎每一个提示/想法/建议。

+0

如果没有MCVE,提供有用的建议会有点困难。但是,在调试器(大概是关闭优化编译)和发布模式下行为不同的代码通常是某种形式的未定义行为的结果。举例来说,这可能意味着您声称所有指针似乎都是有效的说法是错误的。 – Peter

+0

Peter:这里有很多指针,我当然无法检查所有的指针。所以我希望/猜测他们是有效的,至少我看不到什么奇怪的东西。 – Elmi

回答

0

这看起来像一个糟糕的构建。清理所有内容并使用完全相同的编译器和编译器选项重建库和应用程序,问题可能会消失。

+0

这不是解决方案。我已经尝试过重建,使用不同的优化设置进行重建,并使用不同的编译器版本进行重建 - 结果仍然是奇怪的跳跃。 – Elmi

相关问题