我正在尝试从 C# 调用第 3 方 DLL,但在编组一些字符串数据时遇到了麻烦。DLL 是用 Clarion 编写的,我对所使用的数据类型不是很熟悉。具体来说,规范有一个我无法工作的功能的签名:
Bool QuerySoftwareVersion( cstring* version) // edited documentation typo
//Returns Software version (20 character cstring).
我假设 cstring 只是一个以 null 结尾的字符串,但我无法让它out char[] version
在我的定义中使用。有人知道处理这个问题的正确方法吗?
编辑:实际上,到目前为止我所发现的表明 Clarion 中的 cstring 确实只是一个以空字符结尾的字符串。
更新:我更新了问题的标题和详细信息,因为事实证明 DLL 文档中有错字。有问题的version
参数被声明为 type cstring*
not cstringt*. And in Clarion,
cstring` 显然只是一个 c 风格的、以 null 结尾的字符串。所以编组不应该那么复杂,因为他们声称它是用 C 调用约定编写的。有没有人成功地 p/invoked 通过引用参数传递字符串的 Clarion DLL?