我有一个使用libpqxx的 MFC 项目。所有设置都是默认设置。
发布模式正如我预期的那样正常工作。但是当我切换到调试模式时,它会显示一个异常,并说Debug Assertion:
最有趣的是,如果我使用共享DLL而不是静态(当然在Debug上)它可以工作!
Basicaly,使用静态库调试显示此异常/错误。如果我切换到共享DLL它再次工作。当然我可以使用共享作为调试和静态作为发布但这是正确的吗?
注意:这个项目是基础和新鲜的。我没有从Configuratrion Manager更改任何配置。
有什么建议吗?
答案 0 :(得分:4)
好吧,我不确定libpqxx
是否使用MFC(以及哪一个?)。我怀疑你是从一个堆中分配一些内存,并从另一个堆中取消分配它。混合MFC版本以及MFC的静态/非静态混合将导致此断言。
请勿在发布版本中将其视为正常工作!它只是不保护自己(即现在显示任何断言消息)。你最好的办法是找到这个问题的原因,然后首先查看调用堆栈(在这个断言对话框中点击Retry)。
请参阅,libpqxx
是否依赖于MFC,或者它是否禁止混合静态版本的MFC。您可以查看libpqxx
的文档,和/或使用Dependency Walker查看库是否正在使用MFC。