无法确定 C.free 的名称类型

Sam*_*Sam 5 go

C.free我正在尝试在我的 Golang 应用程序中使用。我的代码如下:

package main

import (
    "fmt"
    "unsafe"
)

// #include <stdlib.h>

import (
    "C"
)


//export FreeMemory
func FreeMemory(pointer *int64) {
    C.free(unsafe.Pointer(pointer))
}
Run Code Online (Sandbox Code Playgroud)

我做了一些搜索,我知道错误是因为我没有stdlib.h包含,但我包含。

这是我的构建命令:go build --buildmode=c-shared -o main.dll. 构建后出现的错误是:could not determine kind of name for C.free

我的操作系统是 Windows 10

谢谢

roc*_*a2q 9

如果“C”的导入前面紧跟着一个注释,则该注释(称为前导码)将在编译包的 C 部分时用作标头。例如:

// #include <stdio.h> 
// #include <errno.h> 
import "C"
Run Code Online (Sandbox Code Playgroud)

使用紧接前面的 Go 行注释:

package main

import "unsafe"

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

//export FreeMemory
func FreeMemory(pointer *int64) {
    C.free(unsafe.Pointer(pointer))
}

func main() {}
Run Code Online (Sandbox Code Playgroud)

使用前面的 Go 一般注释:

package main

import "unsafe"

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

//export FreeMemory
func FreeMemory(pointer *int64) {
    C.free(unsafe.Pointer(pointer))
}

func main() {}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,就是这么简单:) (3认同)