我有一个调用 C 函数的 C# 应用程序(Windows 7 vs2010 上的 x86 .net 3.5)
当我将其升级到 .net 4 时,我收到以下消息:
这可能是因为托管 PInvoke 签名与非托管目标签名不匹配。检查 PInvoke 签名的调用约定和参数是否与目标非托管签名匹配。
C签名:
BOOL ABC( UDF_HANDLE 句柄, char* pQualifiedName ) //#define UDF_HANDLE void*
C# 方面:
[SecuritySafeCritical]
[DllImport(dllPath, CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, ThrowOnUnmappableChar = true)]
internal static extern int ABC(
[In] IntPtr handle,
[MarshalAs(UnmanagedType.LPStr)] string qualifiedName);
任何帮助表示赞赏。