Какой объект Smalltalk следует передать функции C, ожидающей const char * - PullRequest
3 голосов
/ 08 июля 2020

Я хочу вызвать следующую функцию C:
int ssh_userauth_password (ssh_session session, const char * username, const char * password)

Но обычные строки Smalltalk не работают:
library ssh_login: session userAuth: nil password: 'myPwd'.

session is указатель, который у меня уже есть и работает нормально.
Но const char * не отображается на обычную строку. Есть ли какой-нибудь класс для сопоставления этого? Также я пробовал использовать CPointer и asByteArray, но оба потерпели неудачу.

1 Ответ

4 голосов
/ 08 июля 2020

Вам нужно передать объект CPointer. Самый простой способ сделать это - набрать 'yay' gcCopyCStringToHeap. В качестве альтернативы есть варианты, такие как gcCopyUnicodeStringToHeap.

...