C#からのDLL呼び出し方法を質問します。
VBで以下のコ-ドでDLL呼出しを行なっています。
------------ VB --------------
Declare Function WM_pc Lib TESTVER.DLL (ByVal buf1 As String, ByVal block As
Integer, ByVal buf2 As String) As Integer
Dim buf1 As String, buf2 As String
Dim ret As Integer
ret = WM_pc(buf1, 15, buf2)
尚、buf2は、C#でいう所の、out buf2(DLL側より値をセットされて帰ってきます。)です。
(C言語の &buf2 です。)
以上の呼び出しをC#で実現したいので、以下の様にしましたが、うまく行きません。
------------ C# --------------
[DllImport(TESTVER.DLL, EntryPoint=WM_pc)]
public static extern int WM_pc(string buf1, int block, out string buf2);
以上でやってみましたがうまく行きません。
何か、他に必要な処理があるのでしょうか? 宜しく御願い致します。
DllImport 使ったことありませんので
自信ありませんが一点だけ。
VB6.0 までは Integer は 16ビット値で、
C# の int は System.Int32 なので 32ビット値だと思いますが
そのへんはどうでしょうか。
suzukaさん、回答有難うございます。
引数型のミスで、NGでした。
int ---> short
string buf1 ---> char[] buf1
string buf2 ---> char[] buf2
以上の変更で、質問内容のDLL呼び出しはうまく行く様になりました。
有難うございました。
ただし、
out string buf2 ---> out char[] buf2
の箇所がうまく動作せず、検討途中です。