Невозможно экспортировать функцию go с параметром const *C .char - PullRequest
0 голосов
/ 01 августа 2020

У меня есть ограничение требований для моей работы, из-за которого мне нужно использовать функцию C ++ как:

bool f1(const char* str)
{
    //.....
}

Аргумент функции должен иметь тип const char*

Однако , когда я пробую что-то вроде следующего в исходном коде golang:

//export f1
func f1(str const *C.char) C.bool { 
    //.......
}

При выполнении go build, я получаю сообщение об ошибке:

expected type, found 'const'

Я попытался заменить

func f1(str const *C.char)

от

func f1(str const *C.GoString)

На этот раз я получил ошибку:

expression C.GoString used as type

Я не знаю, как это сделать.

1 Ответ

0 голосов
/ 07 августа 2020

Вы не можете использовать const напрямую. Вы должны создать typedef из const char. А затем используйте этот тип в аргументе функции.

Пример

package main

/*
#include<stdbool.h>
typedef const char cchar_t;
*/
import "C"

//export f1
func f1(str *C.cchar_t) C.bool {
    return false
}

func main() {}
...