2012-08-06 133 views
15

まず、私はおそらく、私はおそらくこのようなもので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で発生
+0

は完全にネイティブC++コードです(例えば、COMまたはP /呼び出しを介して露光)マネージ拡張(すなわち、VS2003)、またはC++/CLI(と、C++ VS2005以降)? C#コードはどのようにC++アドインをロードしていますか?すべてのC++ソースコードを持っていて、必要な変更を加えることができます(使用しているサードパーティコンポーネントではありません)。あれは正しいですか? –

+0

正解ですが、コードは第三者によって99%書かれています。私はちょうど押しボタンの種類...それはVS2008です。私はいくつかの\ clrを使用して遵守した、それはコードの束(それが何であるかわからない)と私はMultiThreaded DLLとしてそれをやった。コンパイルするとDLLがエクスポートされ、C#プロジェクトの参照として追加されます。 – keynesiancross

+0

OK、これは私が遭遇した同じ問題のようです。 IIRC私はC++メソッド(グローバルを使用するのではなく)で 'static'変数を使用することでしか再現できないので、' static'変数が見つからなかった場合、何が原因か分かりません。アンマネージコードデバッグ(プロジェクトプロパティ、デバッグタブ)を有効にし、デバッグ>例外でスローするとブレークを有効にし、crtdllで例外をデバッグするかどうかを確認する必要があります。cは任意の手がかりを提供します... –

答えて

17

ネイティブサブシステム(CRTやATLなど)。いくつかの種類の混在モードのDLLを持っているように思えます。一つの推奨される解決策は、管理DLLからエントリポイントを削除することです: はマネージドDLL/NOENTRYと

  1. リンクのエントリポイントを削除します。ソリューションエクスプローラーで、プロジェクト ノードを右クリックし、[プロパティ]をクリックします。 [プロパティページ]ダイアログボックスで リンカをクリックし、コマンドラインをクリックして、このスイッチを 追加オプションフィールドに追加します。
  2. リンクmsvcrt.lib。 [プロパティページ]ダイアログボックスで、リンカ、 をクリックし、msvcrt.libをAdditional Dependencies プロパティに追加します。
  3. nochkclr.objを削除します。 「入力」ページ(前の手順と同じページ)で、「Additional Dependencies」プロパティーからnochkclr.objを除去します。
  4. CRTのリンク。 [入力]ページ(前の手順と同じページ)で、__DllMainCRTStartup @ 12を[強制シンボル参照]プロパティに追加します。

より詳細には、ここで見つけることができます:https://support.microsoft.com/en-us/kb/814472

+0

ありがとうございました - 私は今それを試みています。私はnochkclr.objがすでにそこになかったことに気づいた... – keynesiancross

+0

それは、おかげで多くの仕事を! – keynesiancross

+0

Microsoftサポートへのリンクが動作しません:(更新してください! – Doc

関連する問題