gpt4 book ai didi

c# - 此 C 函数的正确 C# PInvoke 签名

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:54:42 28 4
gpt4 key购买 nike

我使用 PInvoke Interop Assistant 生成了 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);

我将遵循以下建议 similar question并提供更新。

更新

我的签名确实可以在 Windows CE 6 上使用 marshal alloc/dealloc。 Tergiver 的签名也适用于 Windows CE 6,它不需要 marshal alloc/dealloc。

最佳答案

您缺少 CallingConvention.Cdecl。或者在 C 端使用 __stdcall

关于c# - 此 C 函数的正确 C# PInvoke 签名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639680/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com