Как использовать C.free?

Пытаюсь собрать программу, состоящую из двух частей - Go-библиотека (в идеале нужна статическая) и основная C++ программа. Пробую:

 ~/opm-mkmd $ go build -buildmode=plugin -a -tags netgo -o opm-mkmd.so opm-mkmd.go
./opm-mkmd.go:22:11: could not determine kind of name for C.free

Я добавлял даже эти строки:

/*
#include <stdlib.h>
*/
...
//export GetMetadata

Не помогло...

Дистрибутив - Debian 11 (bullseye/stable)

Код: https://github.com/Dima-diep/opm-mkmd

К сожалению, опыта написания и сборки программ на Go не имею...

UPD: минимально воспроизводимый пример:

 ~ $ cat min.go
package main

/*
#include <stdlib.h>
*/

import (
    "C"
    "unsafe"
    "fmt"
)

//export fnc
func fnc(cch *C.char) {
    pkg := cch
    defer C.free(unsafe.Pointer(cch))
    fmt.Printf("%s\n", pkg)
}

 ~ $ cat min.c
extern void fnc(char *pkg)

int main() {
    fnc("OK");
    return 0;
}

Ответы (1 шт):

Автор решения: RandomDice 779

Сработало вот что. надо "C" импортировать отдельно, и прямо над ним включать stdlib.h. вот так:

// #include <stdlib.h>
import "C"

import (
 ...
)
→ Ссылка