C# からの C DLL の呼び出しに問題があります。
C関数は(私はこれのためのacヘッダーや良い仕様を持っていません:()
int knr12_read ( char *kn12, char *ik9, char *wok, char *wlc,
char *plz, char *ort, char *woz );
kn12 は参照パラメータです
これは私がC#で試したことです
[return: MarshalAs(UnmanagedType.U4)]
[DllImport("Knr12.dll", CallingConvention = CallingConvention.StdCall, EntryPoint = "knr12_read", CharSet = CharSet.Ansi)]
unsafe public static extern int knr12_read(out IntPtr buffer, string ik9, string wok, string wlc, string plz, string ort, string woz);
int knr = knr12_read(out pBuffer, knrTemp, "11111", "", "98529", "Suhl", "1");
string data = Marshal.PtrToStringAnsi(pBuffer);
返される int は常に正しいはずですが、ref パラメータ pBuffer に問題があります...
また、他の変数の文字列タイプも機能しています...
を使用するref
と、常に が取得されAccessViolation error
knr12_read()
ます。使用するout
とポインターが取得されますが、文字列は常に空であり、そうすることはString
できref
ませchar*
ん。AccessViolation error
knr12_read()
ガイドしてください。