我正在尝试在我的 Go 程序中使用外部 C 库。
我尝试了以下方法:
package cgoexample
/*
#include <stdio.h>
#include <stdlib.h>
#cgo CFLAGS: -I/Users/me/somelib/include
#cgo LDFLAGS: /Users/me/somelib/libhello.a
#include "stinger.h"
void myprint(char* s) {
printf("%s", s);
}
*/
import "C"
import "unsafe"
//... more here
里面/Users/me/somelib/include
有 .h 文件,libhello.a
里面有 .o 文件(我使用ar
命令检查过),它具有 .h 文件中定义的功能。
似乎 .h 文件被链接好,但看起来存档文件没有被链接。我不断得到这些:
warning: 'some_method_in_my_h_file" declared 'static' but never defined
这些警告被视为错误。无论如何,它们应该在存档文件中实现,所以我很困惑我在这里做错了什么。
当我跑步go build
和gun run
.
我感觉我的#cgo
命令无效(我不是 C 专家),