libbqxx在DEBUG模式下抛出异常

时间:2013-03-31 06:01:32

标签: c++ visual-c++ c++11 postgresql-9.2 libpqxx

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

发布模式正如我预期的那样正常工作。但是当我切换到调试模式时,它会显示一个异常,并说Debug Assertion:

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

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

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

有什么建议吗?

1 个答案:

答案 0 :(得分:4)

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

请勿在发布版本中将其视为正常工作!它只是不保护自己(即现在显示任何断言消息)。你最好的办法是找到这个问题的原因,然后首先查看调用堆栈(在这个断言对话框中点击Retry)。

请参阅,libpqxx是否依赖于MFC,或者它是否禁止混合静态版本的MFC。您可以查看libpqxx的文档,和/或使用Dependency Walker查看库是否正在使用MFC。