C#のWPFアプリケーション私は、アンマネージの外部DLLへの多くの呼び出しが含まれています。アプリケーションを正常に実行すると(つまり、Visual Studioデバッガの外部で)、DLLへのすべての呼び出しが正常に機能します。 Visual Studioの2013内からデバッグするときただし、DLL内の1つの特定のメソッドの呼び出しは、アプリケーションをクラッシュ:Visual Studio 2013で「vshost32.exeが動作を停止しました」原因が考えられますか?
[DllImport("Client.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern string ClientGetVersion();
...と:
これは私がメソッドをインポートする方法ですVisual Studioがデバッグ中にアプリケーションをホストするvshost32.exeプロセスを使用していることを思わ
try
{
version = ClientGetVersion();
}
catch (Exception ex)
{
// Error handling omitted for clarity...
}
:これは私がDLLのメソッドを呼び出す方法ですgingセッション(VSHOST - the Hosting Process)。さらに、「特定のAPIへの呼び出しは、ホスティングプロセスが有効な場合に影響を受ける可能性があります。このような場合、正しい結果を返すためにホスティングプロセスを無効にする必要があります。 (MSDNの記事How to: Disable the Hosting Processを参照してください)。誰もがこれを具体的に引き起こす可能性がどのような任意のアイデアを持ってい
:以下に示すように、プロジェクトでは、「Visual Studioのホストプロセスを有効にする」オプションを無効にする]> [プロパティ...>デバッグは、実際に問題を解決しません「...特定のAPIへの呼び出し...」で問題が発生しましたか?
コード内のバグを修正してください。戻り値の型は文字列にすることはできません。IntPtrでなければなりません。次に、Marshal.PtrToStringAnsi()を使用して文字列を復元します。 –
あなたの素早い返信のために@HansPassantに感謝します - それはそれをソートしました! – YetMoreStuff