|
分類:[C#]
開発環境:VisualStudio2008 使用言語:C#
C#で作成されたアプリからC++で作成されたdllを参照し、GetValueという関数から値を取得する実装を行っていました。 当初下記@のように引数が4つでしたが、Aのように引数を一つ増やし5つにしたところ、その関数を叩くと落ちるようになりました。 落ちる原因としては第5引数のメモリ(?)が何か不正な状態になっているようで、第5引数の値を使用しようとすると落ちます。
---下記@AはC++での実装--- @ GetValue( IN DWORD dwBarType, IN DWORD dwSizeNB, OUT LPDWORD lpdwBarSizeB, OUT LPDWORD lpdwBarSizeS )
A GetValue( IN DWORD dwBarType, IN DWORD dwSizeNB, IN DWORD dwResolution, OUT LPDWORD lpdwBarSizeB, OUT LPDWORD lpdwBarSizeS )
---下記1、2はC#での実装--- [DllImport("test.dll", CharSet = CharSet.Unicode, EntryPoint = "GetValue")] static extern bool GetValue(uint barcodeType , uint black1 , uint resolution , uint[] blacks , uint[] whites);
ソースコード的には落ちるような実装はされておらず、引数を一つ追加しただけで落ちるようになってしまいました。 また、渡し口での値は正しいことが確認できており、受け口では第5引数が何やら不正な値になっています。
現状、原因もわかりませんので対応策が思いつきません。 何かありましたら、ご教授して頂ければと思います。
|