我有一个使用 libpqxx的MFC项目。所有设置均为默认设置。
发布模式按我的预期正常工作。但是当我切换到调试模式时,它显示一个异常并说调试断言:
最有趣的是,如果我使用共享 DLL 而不是静态(当然是在调试中)它可以工作!
基本上,使用静态库进行调试会显示此异常/错误。如果我切换到共享 DLL,它会再次工作。当然我可以使用共享作为调试和静态作为发布,但这是正确的吗?
注意:这个项目是基础和新鲜的。我没有从配置管理器更改任何配置。
有什么建议吗?
我有一个使用 libpqxx的MFC项目。所有设置均为默认设置。
发布模式按我的预期正常工作。但是当我切换到调试模式时,它显示一个异常并说调试断言:
最有趣的是,如果我使用共享 DLL 而不是静态(当然是在调试中)它可以工作!
基本上,使用静态库进行调试会显示此异常/错误。如果我切换到共享 DLL,它会再次工作。当然我可以使用共享作为调试和静态作为发布,但这是正确的吗?
注意:这个项目是基础和新鲜的。我没有从配置管理器更改任何配置。
有什么建议吗?
好吧,我不确定是否libpqxx
使用 MFC(以及哪个?)。我怀疑您正在从一个堆中分配一些内存,并从另一个堆中取消分配它。混合 MFC 版本以及 MFC 的静态/非静态混合将导致此断言。
不要将其视为在发布版本上工作!它只是不为自己辩护(即现在显示任何断言消息)。最好的办法是找出这个问题的原因,第一个是查找调用堆栈(在这个断言对话框上点击重试)。
看,如果libpqxx
依赖于 MFC,或者它不允许混合静态版本的 MFC。您可以查看 的文档libpqxx
,和/或使用 Dependency Walker 查看库是否正在使用 MFC。