まず、私はおそらく、私はおそらくこのようなもので5級のレベルにいるはずです...私はWPFアプリケーションでC++アドインを使用しています。プログラムを終了しようとすると、次のエラーメッセージが表示されます。0xC0020001:文字列バインディングが無効です。 - WPFでのみ発生
Raptor.exeの0x770d15deで未処理の例外が発生しました。0xC0020001:文字列バインドが無効です。
私はこの問題を解決するためにこのblog entryを使用してきましたが、私は運がないです。私が気づいたことの一つは、コンソールアプリケーションで同じC++アドインを使用し、WPFアプリケーションで使用されているのと同じメソッドの多くを呼び出すと、コンソールは問題なく終了します。
私もC++コードを使い、どこでも宣言された単一の静的変数を見つけることができません。しかし、静的な方法があります。
ご協力いただければ幸いです。
EDIT:これがどこで壊れているかを確認するために、いくつかのデバッグ機能を有効にしました。これは、次の最後のブラケットに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_);
}
これは、ネイティブライブラリとリンクしていないので、それらのDllMainは、いくつかの必要な初期化しない特定のDLLで発生
は完全にネイティブC++コードです(例えば、COMまたはP /呼び出しを介して露光)マネージ拡張(すなわち、VS2003)、またはC++/CLI(と、C++ VS2005以降)? C#コードはどのようにC++アドインをロードしていますか?すべてのC++ソースコードを持っていて、必要な変更を加えることができます(使用しているサードパーティコンポーネントではありません)。あれは正しいですか? –
正解ですが、コードは第三者によって99%書かれています。私はちょうど押しボタンの種類...それはVS2008です。私はいくつかの\ clrを使用して遵守した、それはコードの束(それが何であるかわからない)と私はMultiThreaded DLLとしてそれをやった。コンパイルするとDLLがエクスポートされ、C#プロジェクトの参照として追加されます。 – keynesiancross
OK、これは私が遭遇した同じ問題のようです。 IIRC私はC++メソッド(グローバルを使用するのではなく)で 'static'変数を使用することでしか再現できないので、' static'変数が見つからなかった場合、何が原因か分かりません。アンマネージコードデバッグ(プロジェクトプロパティ、デバッグタブ)を有効にし、デバッグ>例外でスローするとブレークを有効にし、crtdllで例外をデバッグするかどうかを確認する必要があります。cは任意の手がかりを提供します... –