2012-01-13 22 views
0

DLLENTRY int CCON mfScan (int, int, int, char *, int *);私はこのコードで以下のエラーが出ますC#

[DllImport("mflib.dll")] 
public static extern int mfScan(int mode, int font, int timeout, string ret_codeline, int ret_maxchars); 

でDLLの呼び出しパラメータのパスからエラーを取得します。それはテストを指します。私に何ができる ?

string test = string.Empty; 
int retval = mfScan(32, 2, 5000, test, 100); 

保護されたメモリを読み書きしようとしました。これはしばしば、他のメモリが壊れていることを示します。

答えて

3

これを試してみてください:

[DllImport("mflib.dll")] 
public static extern int mfScan(int mode, int font, int timeout, StringBuilder ret_codeline, out int ret_maxchars); 

はさらにout int ret_maxcharsに、文字列の代わりにStringBuilderに注意してください。 次に、呼び出し規約が正しいことを確認します。

+0

私もあなたの答えを受け入れるが、GSergが最初だった。ありがとうございました。 –

+0

@Orhan CinarそれがStringBuilderなしで正常に動作する場合は、もう1つは正しく受け入れます:) –

+0

文字列バージョンでは、コードラインを取得できません。文字列の長さを初期化する必要があります。 –

3

out int ret_maxcharsである必要があります。

DllImportにはCharSetを追加することを検討する必要があります。

関連する問題