我在我的项目中使用 引用了一个非托管 DLL [DLLImport]
,但是当我匹配方法签名时收到奇怪的结果。
这是来自 DLL 的示例签名:
DLLEXPORT unsigned long OpenPort(unsigned long ulPort,
unsigned long ulBaudRate,
unsigned long ulByteSize,
unsigned long ulPartity,
unsigned long ulStopBits,
unsigned long ulFlowControl)
这是我导入函数的 C# 代码:
[DllImport("C:/my.dll", CallingConvention = CallingConvention.Cdecl)]
public static extern uint OpenPort(ulong ulPort, ulong ulBaudRate,
ulong ulByteSize, ulong ulParity, ulong ulStopBits, ulong ulFlowControl);
请注意,我使用返回类型声明它uint
,因为当我尝试使用时ulong
会得到意想不到的结果(长数字通常看起来有点像内存地址)。
但是,如果我使用int
/的返回类型,该函数可以工作并返回预期的结果uint
。任何人都可以为我阐明这种行为吗?
谢谢。