Tôi có một phương pháp tôi muốn nhập khẩu từ một DLL và nó có một chữ ký của:DllImport và char *
BOOL GetDriveLetter(OUT char* DriveLetter)
Tôi đã thử
[DllImport("mydll.dll")]
public static extern bool GetDriveLetter(byte[] DriveLetter);
và
[DllImport("mydll.dll")]
public static extern bool GetDriveLetter(StringBuilder DriveLetter);
nhưng không trả lại bất kỳ thứ gì trong biến DriveLetter.
UnmanagedType.I1 có nghĩa là gì? – Malfist
@Malfist, Giá trị I1 yêu cầu CLR so khớp giá trị dưới dạng số nguyên 1 byte. Nó thực sự không chính xác trong mẫu này vì I4 là giá trị đúng (cập nhật một chút trước). Về lý do tại sao hãy kiểm tra mục nhập blog này tôi đã viết trên các giá trị bool marshalling: http://blogs.msdn.com/jaredpar/archive/2008/10/14/pinvoke-and-bool-or-should-i-say-bool .aspx – JaredPar
Khi tôi tạo I4, tôi nhận được MarshalDirectiveException – Malfist