現在、C# Windows アプリケーションから Win32 DLL[Native] を呼び出すという問題が発生しています。
私はここまで来ました。
C++ ソース:
extern "C" __declspec(dllexport) int PlaceSound(__in DWORD frequence, __in DWORD duration)
{
Beep(frequence, duration);
return 0;
}
C# ソース:
[DllImport("SampleLib.dll")]
public extern static int PlaceSound(int Freq, int Dura);
public form1 { InitializeComponements; PlaceSound(150, 500); }
デバッグ時にサウンドを受け取りますが、ライブラリが整数値を返すと、ピンボークが発生するようです。
Pinvoke:
PInvoke 関数 'SoundTracer!SoundTracer.Form1::PlaceSound' の呼び出しにより、スタックのバランスが崩れました。これは、マネージド PInvoke 署名がアンマネージド ターゲット シグネチャと一致しないことが原因である可能性があります。PInvoke シグネチャの呼び出し規約とパラメーターがターゲットのアンマネージド シグネチャと一致することを確認します。
私は何を間違っていますか?