Я новичок в программировании, может ли кто-нибудь помочь мне вызвать функцию указателя из dll delphi в Visual C#.C# Dllimport Delphi Pointer
Это функция Delphi, хранящаяся в DLL. // Delphi код, хранящийся в 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 Device, приложенного к принтеру, его имя на экране, как описано в коде delphi. – mChad