我已使用 PInvoke 互操作助手生成 C# PInvoke 签名。我想确认一下。我在调用 DLL 时收到“找不到 PInvoke DLL”消息。我正在导出函数。DLL 存在可执行文件。消息和密文是原始字节的输入/输出 blob,并且是相同的缓冲区。
extern "C" int __declspec(dllexport) EncryptDeviceName(uint8 *message, uint8 *ciphertext, uint64 msglength)
{
...
return 0;
}
它生成了以下 C# PInvoke 签名:
/// Return Type: int
///message: UINT8*
///ciphertext: UINT8*
///msglength: UINT64->unsigned __int64
[DllImport("HC128.dll", EntryPoint = "EncryptDeviceName")]
public static extern int EncryptDeviceName(System.IntPtr message, System.IntPtr ciphertext, ulong msglength);
我将遵循以下类似问题中的建议并提供更新。
更新
我的签名确实适用于带有 marshal alloc/dealloc 的 Windows CE 6。Tergiver 的签名也适用于 Windows CE 6,它不需要 marshal alloc/dealloc。