これは呼び出しコードです
unit CY;
interface
uses windows;
type
TMember_Rd = Record
iID: integer;
sCode: Array[0..255] of char;
sName: Array[0..255] of char;
end;
PTMember_Rd = ^TMember_Rd;
function GetMember(sStore, sMachine: PChar; const sTrack, sCode, sVerify: PChar;
Member: PTMember_Rd; sError: PChar): Integer; stdcall; external 'Interface.dll';
implementation
end.
GetMember 関数を呼び出してメンバーにデータを入力する必要があります。エラーが発生した場合は、sError からメッセージを取得できます。
この関数を呼び出すにはどうすればよいですか?
私は Delphi に詳しくありません。私の間違いはポインターにあると思います。
以下は私のC#コードが機能していることです
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Text;
namespace JFTest
{
public class JFService
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct PTMember_Rd
{
public Int32 id;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string sCode;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)]
public string sName;
}
[DllImport("Interface.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
public static extern int GetMember(StringBuilder sStore, StringBuilder sMachine, StringBuilder sTrack, StringBuilder sCode, StringBuilder sVerify, ref PTMember_Rd Member, [MarshalAs(UnmanagedType.LPStr)] string sError);
}
}
そして、私は反対側のコードを持っていません.dllは顧客が私に送ったものであり、彼らはソースコードを持っていません.