0xC0020001:字符串绑定无效. - 仅在WPF中发生

key*_*oss 19 c# c++ wpf

首先,我可能会说我可能已经达到了5级的水平......我在WPF应用程序中使用了C++插件.每当我尝试退出程序时,都会收到此错误:

Raptor.exe中0x770d15de处的未处理异常:0xC0020001:字符串绑定无效.

我一直在使用这个博客条目尝试解决问题,但我没有运气.但有一件事我注意到,当我在控制台应用程序中使用相同的C++插件时,调用WPF应用程序中使用的许多相同方法,控制台退出时没有问题.

我也经历过C++代码,找不到任何地方声明的静态变量.但是有静态方法.

任何帮助将非常感激!

编辑:我启用了许多调试功能,以查看它中断的位置.它打破了以下最后一个括号中的sp_counted_impl.hpp文件(Boost):

    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_ );
    }
Run Code Online (Sandbox Code Playgroud)

exa*_*ert 20

某些DLL不与本机库链接,因此它们的DllMain不会初始化某些所需的本机子系统(如CRT或ATL).听起来你有某种混合模式的DLL.建议的解决方案是从托管DLL中删除入口点:删除托管DLL的入口点

  1. 与/ NOENTRY联系.在解决方案资源管理器中,右键单击项目节点,单击"属性".在"属性页"对话框中,单击"链接器",单击"命令行",然后将此开关添加到"其他选项"字段.
  2. 链接msvcrt.lib.在"属性页"对话框中,单击"链接器",单击"输入",然后将msvcrt.lib添加到"其他依赖关系"属性.
  3. 删除nochkclr.obj.在"输入"页面(与上一步骤相同的页面)中,从"附加依赖项"属性中删除nochkclr.obj.
  4. 在CRT中链接.在"输入"页面(与上一步骤相同的页面)中,将__DllMainCRTStartup @ 12添加到"强制符号引用"属性中.

更多细节可以在这里找到:https://support.microsoft.com/en-us/kb/814472