哪个Smalltalk对象应该传递给需要const char的C函数*

哪个Smalltalk对象应该传递给需要const char的C函数*,smalltalk,visualworks,Smalltalk,Visualworks,我想调用以下C函数: int-ssh\u-userauth\u密码(ssh\u会话,常量字符*用户名,常量字符*密码) 但是普通的Smalltalk字符串不起作用: library ssh\u登录:会话用户auth:nil密码:“myPwd”。 session是我已经拥有的一个指针,可以正常工作。 但是const char*未映射到普通字符串。 有什么类可以映射这个吗? 我还尝试了CPointer和asByteArray,但都失败了。您需要传递一个CPointer对象。最简单的方法是通过gcCo

我想调用以下C函数:
int-ssh\u-userauth\u密码(ssh\u会话,常量字符*用户名,常量字符*密码)

但是普通的Smalltalk字符串不起作用:
library ssh\u登录:会话用户auth:nil密码:“myPwd”。

session
是我已经拥有的一个指针,可以正常工作。
但是
const char*
未映射到普通字符串。 有什么类可以映射这个吗?
我还尝试了CPointer和asByteArray,但都失败了。

您需要传递一个CPointer对象。最简单的方法是通过gcCopyCStringToHeap
'yay'gcCopyCStringToHeap
。另外还有一些变体,如
gccopyUnicodestingtoheap

我似乎还有另一个问题,因为我没有使用gcCopyToHeapEncoding或copyToheapuncode。你有什么问题?您应该收到一个句柄,实际上是两个句柄,并将其传递给C函数。调用应该回答0(SSH_AUTH_SUCCESS),但回答-1(SSH_AUTH_ERROR:发生了严重错误)。所以我的问题得到了回答,因为我可以将Smalltalk字符串作为参数传递给C函数。但我的问题依然存在。错误为(‘写入数据包:套接字上的错误(或连接关闭):未知错误’)如果您可以访问接收端,请尝试增加sshd的日志级别,以找出问题所在。可以是任何内容,从协议上的编码问题到加密问题等等。