1

我有一个使用 libpqxx的MFC项目。所有设置均为默认设置。

发布模式按我的预期正常工作。但是当我切换到调试模式时,它显示一个异常并说调试断言:

最有趣的是,如果我使用共享 DLL 而不是静态(当然是在调试中)它可以工作!

基本上,使用静态库进行调试会显示此异常/错误。如果我切换到共享 DLL,它会再次工作。当然我可以使用共享作为调试和静态作为发布,但这是正确的吗?

注意:这个项目是基础和新鲜的。我没有从配置管理器更改任何配置。

有什么建议吗?

4

1 回答 1

4

好吧,我不确定是否libpqxx使用 MFC(以及哪个?)。我怀疑您正在从一个堆中分配一些内存,并从另一个堆中取消分配它。混合 MFC 版本以及 MFC 的静态/非静态混合将导致此断言。

不要将其视为在发布版本上工作!它只是不为自己辩护(即现在显示任何断言消息)。最好的办法是找出这个问题的原因,第一个是查找调用堆栈(在这个断言对话框上点击重试)。

看,如果libpqxx依赖于 MFC,或者它不允许混合静态版本的 MFC。您可以查看 的文档libpqxx,和/或使用 Dependency Walker 查看库是否正在使用 MFC。

于 2013-03-31T15:53:03.133 回答