作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
因此,我正在拔头发。
我想要做的就是将一个 .o(C 目标文件)与一个 Go 包链接起来,这样 Go 包就可以调用 C 函数。
似乎没有关于cgo的CGO_OFILES
参数的任何文档,在网上搜索后似乎是我需要的。
我试过将它放在 Go 文件的顶部:
/*
#cgo CGO_OFILES: doc-capi-tesseract.o
#include <stdlib.h>
#include "doc-capi-tesseract.h"
*/
import "C"
但这给了我错误 invalid #cgo verb: #cgo CGO_OFILES: doc-capi-tesseract.o
。然后我在某处读到可以使用 makefile,所以我制作了这个可能不正确的 makefile:
include $(GOROOT)/src/Make.inc
TARG=tesseract
CGOFILES=tesseract.go
CGO_OFILES=doc-capi-tesseract.o
include $(GOROOT)/src/Make.pkg
%.o: %.cpp
$(HOST_CC) $(CGO_CFLAGS_$(GOARCH)) -g -O2 -fPIC -o $@ -c $^
但我不知道如何处理该文件。如果我运行 make
或 make myfile
或 go build makefile
什么也不会发生。不知道如何使用它。
有人可以向我解释如何将 Go 文件链接到 C 目标文件吗?
最佳答案
#2 的示例:
// #cgo CFLAGS: -Isrc/include
// Where doc-capi-tesseract.h is!
// #cgo LDFLAGS: doc-capi-tesseract.a
// #include "doc-capi-tesseract.h"
import "C"
关于戈朗 : How to link C objects using CGO_OFILES?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26418883/
因此,我正在拔头发。 我想要做的就是将一个 .o(C 目标文件)与一个 Go 包链接起来,这样 Go 包就可以调用 C 函数。 似乎没有关于cgo的CGO_OFILES参数的任何文档,在网上搜索后似乎
我是一名优秀的程序员,十分优秀!