私はReSharperでデバッグするときに別のメモリレイアウトが得られるという問題があります。文字列の配列をマーシャリングする適切な方法は何ですか?
私は、(多くても)7文字のヌル終了文字列の配列を返すアンマネージドメソッドを持っています。 ReSharperのデバッガなしでこのメソッドを実行すると、 "next"文字列の先頭は16バイト後になります。 と ReSharperのデバッガ(ReSharperのユニットテストフォームで "Debug Unit Tests"オプションを選択)を実行すると、開始は64バイト後になります。
メソッドシグネチャは、以下のスニペットに似ています。文字列配列は、ソリューションhereと同様に「作成」されます。
[return: MarshalAs(UnmanagedType.I1)]
[DllImport("myDll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
private static extern bool GetStrings(IntPtr sourceFile,
out IntPtr ptrToStrings,
out uint numberOfStrings);
私が何かを見逃していましたか?私はReSharperがVisual Studioでビルドされた通常のデバッガを使用していると考えました。 ReSharperデバッガの有無はどうやって切り替えるのですか? –
それは私が考えたものです。 ReSharperを使って単体テストをデバッグすることをお勧めしますか? – cadrell0
あなたはテストランナーでデバッグを指していますか? – jrummell