나는 프로그래밍에서 새로운데 누군가가 델파이 DLL에서 Visual C# 함수로 포인터 함수를 호출 할 수있게 도와 줄 수 있습니까?C# Dllimport Delphi Pointer
다음은 DLL에 저장된 델파이 함수입니다. // 델파이 코드가 DLL
function DeviceName(Size : Integer; Msg : Pointer) : Integer stdcall;
var
i: Integer;
TempByte : PByte;
TempName : string;
begin
if DLLClass.DevList.HidDevices.Count > 0 then
begin
TempName := (DLLClass.DevList.HidDevices.Name[DLLClass.HIDTool.CurrentDeviceIndex]);
if Length(TempName) <= Size then
begin
try
TempByte := Msg;
for i := 0 to Length(TempName) - 1 do
begin
TempByte^ := Ord(TempName[i+1]);
Inc(TempByte)
end;
Result := Length(TempName);
except
Result := -2;
end;
end
else
begin
Result := -3;
end;
end
else
begin
Result := -1;
end;
end;
// C# 코드 ` // 가져 오기이 델파이 기능을 가지 지저분한있는 기능 포인터
[DllImport("HID_DLL.dll", CallingConvention= CallingConvention.StdCall, CharSet = CharSet.Ansi)]
public unsafe static extern int DeviceName(IntPtr Size, [MarshalAs(UnmanagedType.LPStr)] string Msg);
unsafe static void Main()
{
byte[] buffer = new byte[32768];
DeviceName(255, &**buffer);
Console.WriteLine("%s\n" + buffer);
}
`
컴파일을 수행 할 때 cmd 행에 무엇이 들어 있는지는 예상치 못한 결과입니다. 최종 결과는 내 코드가 USB HID 장치를 감지하여 델파이 코드가 디스크로 기록 될 때 화면에 이름이 인쇄되도록하는 것입니다. – mChad