使用“Go build”

时间:2017-10-28 15:58:17

标签: c go

我试图找到一个使用C中的Go代码工作的最小例子,例如this。我正在努力解决以下编译错误消息:

  

ld:警告:忽略文件   /Users/username/gocode/src/example/example.dylib,文件是为   存档不是要链接的体系结构(x86_64):   /Users/username/gocode/src/example/example.dylib

我的尝试如下。我在一个文件main.go中有一个简单的Go包:

package example

import "C"

//export GoEcho
func GoEcho(s *C.char) string {
    return C.GoString(s)
}

func main() {}

然后我用

编译
go build -buildmode=c-archive -o example.dylib main.go

go build -buildmode=c-shared -o example.dylib main.go

GOARCH=amd64 go build -buildmode=c-shared -o LibraryLinkExamples.dylib main.go

操作系统是OS X 10.11,Go版本是go versiongo1.9 darwin/amd64

我正在使用的C代码如下:

#include "example.h"
#include <stdio.h>

int main(int argc, char const *argv[])
{
    GoString res = GoEcho("test");
    printf("%.*s\n", (int)res.n, res.p);
    return 0;
}

当我构建库并在同一操作系统甚至计算机上使用它时,我不明白为什么我得到“哪个不是正在链接的体系结构(x86_64)”错误消息?什么可以解释这个?

更新 在官方文档here中,它说:

  

amd64(也称为x86-64)

意味着应该与此设置兼容x86-64。它不是go build中的错误?

0 个答案:

没有答案