aronshen 发表于 2024-8-3 10:09:38

调用第三方 DLL, 遇到无符号字节指针和整数型指针


函数:int ICATCom_ReadRGBI(const int CommPort, const int Channel, unsigned char* RedValues, unsigned char* GreenValues, unsigned char* BlueValues, int* IntensityValues)
功能:读取测试仪指定通道的 RGB 和相对光强度(Intensity)的值
参数:
--ComPort: 整形数,指定的设备的串口号,如连接在 Com3, 则该参数为 3。
--Channel: 整形数,测试仪通道号,从 0 开始。0 表示第一个通道
--RedValues: 无符号字节型指针,保存返回的 Red 值(0-255)
--GreenValues: 无符号字节型指针,保存返回的 Green 值(0-255)
--BlueValues: 无符号字节型指针,保存返回的 Blue 值(0-255)
--IntensityValues:整形数指针,保存返回的 Intensity 的值(0-99999)


我用这个调用会卡死,是在哪里错了


Xelloss0618 发表于 2024-8-3 10:15:22

按以前那样,将所有指针改成变整数,传参时 取变量地址 (无符号字节变量)
你也可以自己封装一个无符号字节指针,但没什么必要。

aronshen 发表于 2024-8-3 11:27:16

Xelloss0618 发表于 2024-8-3 10:15
按以前那样,将所有指针改成变整数,传参时 取变量地址 (无符号字节变量)
你也可以自己封装一个无符号字节 ...

第一次使用第三方的 DLL,不知道是不是改成这样




Xelloss0618 发表于 2024-8-3 11:40:19

是,指针传参时用 取变量地址

aronshen 发表于 2024-8-3 11:47:02

Xelloss0618 发表于 2024-8-3 11:40
是,指针传参时用 取变量地址

谢谢你,成功了

aronshen 发表于 2024-8-3 14:06:53

Xelloss0618 发表于 2024-8-3 11:40
是,指针传参时用 取变量地址

大佬,我还想问一下如果是文本数组和整数数组要怎么操作?谢谢

Xelloss0618 发表于 2024-8-3 14:14:43

aronshen 发表于 2024-8-3 14:06
大佬,我还想问一下如果是文本数组和整数数组要怎么操作?谢谢

DLL的数组本质上也是指针, 整数 这种基本数组就用「取数组变量地址」,整数类用「整数数组类.取数组指针」。
文本数组比较难搞,要看文本编码,目前没什么现成的写法。
页: [1]
查看完整版本: 调用第三方 DLL, 遇到无符号字节指针和整数型指针