나는 델파이의 절차가 : 내가 전달Pchar Delphi DLL을 C#으로 가져 오시겠습니까?
procedure PasswordDLL(month integer; password pchar);
export;
절차를 출력합니다 암호를 "암호"를 PChar를 .. 내가 읽는 google..and 무슨 .... 심판에서 : HERE 내가 전화 할 때 다음
[DllImport(
"DelphiPassword.dll",
CallingConvention = CallingConvention.StdCall,
CharSet = CharSet.Ansi,
EntryPoint = "PasswordDLL")]
public static extern void PasswordDLL(
int month,
[MarshalAs(UnmanagedType.LPStr)] string password
);
: 및 HERE
내가 가지고 올
string pass = "";
PasswordDLL(2, pass);
"암호"문자열로 출력 할 암호.
하지만 BadImageFormatException 처리되지 않은 얻을 것이다 : 잘못된 형식으로 프로그램을로드하려고했습니다. (HRESULT 예외 : 0x8007000B)
사용 된 함수 형식이 잘못 되었습니까? 내가 PChar에 대해 잘못된 UnmanagedType을 사용했는지는 모르겠지만 읽음에서 LPWStr과 LPStr 중 하나입니다. 뭔가 놓쳤습니까? 사전에
감사합니다 ... 오프
감사합니다. 요약하면 나를 이해하는 데 도움이됩니다. :) – King
뭔가 잘못 될 것입니다 : PChar가 가리키는 버퍼는 호출자에 의해 할당되어야합니다. 그렇지 않으면 종료시 AV가 발생합니다 (기껏해야). dll에 전달 된 버퍼의 크기를 지정하는 매개 변수를 추가해야하며, null 문자를 포함하여 데이터를 반환하기에 충분히 큰지 확인하고, 그렇지 않으면 오류를 반환해야합니다. – Stephane
훌륭해.이게 내가 델파이 5와 C#을 완벽하게 조사하고있는 문제를 해결했다. 많은 것을 알고 피트 – nrjohnstone