首先,我应该说明一下我的水平可能只有五年级的程度……我在一个WPF应用程序中使用了一个C++插件。每当我尝试退出程序时,我都会收到以下错误:
Unhandled exception at 0x770d15de in Raptor.exe: 0xC0020001: The string binding is invalid.
我一直在使用这篇 博客文章 来尝试找出问题所在,但是一直没有成功。不过有一件事情我注意到了,当我在控制台应用程序中使用相同的C++插件,并调用与WPF应用程序中使用的许多相同方法时,控制台可以正常退出。
我还仔细查看了C++代码,但没有找到任何声明静态变量的地方。不过有静态方法。
非常感谢您的任何帮助!
编辑:我启用了多个调试功能以查看程序停止的位置。它在以下内容的最后一括号处断开连接(Boost的sp_counted_impl.hpp 文件):
virtual void dispose() // nothrow
{
#if defined(BOOST_SP_ENABLE_DEBUG_HOOKS)
boost::sp_scalar_destructor_hook( px_, sizeof(X), this );
#endif
boost::checked_delete( px_ );
}
static
变量(而不是使用全局变量)来复现它,所以如果你没有找到任何static
变量,我不确定是什么原因导致的。您可能需要启用非托管代码调试(项目属性,调试选项卡),在Debug > Exceptions中启用Break when Thrown,并查看在crtdll.c中调试异常是否提供任何线索... - Bradley Graingerfunction_to_call
。继续调试会话,直到它抛出异常。最后一个function_to_call
可能是罪魁祸首;希望它的名称能提供在 C++ 代码中搜索的线索。 - Bradley Grainger