首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从c调用go函数时出错

从c调用go函数时出错
EN

Stack Overflow用户
提问于 2015-04-13 13:15:17
回答 1查看 1.5K关注 0票数 0

新来这里。试图从C调用go函数,但遇到了一些编译问题

这是go脚本

代码语言:javascript
复制
package main
// #cgo CFLAGS: -Wno-error=implicit-function-declaration
// #include <stdlib.h> 
// #include "wrapper.c"
import "C"
//import "unsafe"
import "fmt"
//import "time"

//export dummy
func dummy() int {
    fmt.Println("hi you");
    return 0
}

func main() {
    C.testc()
}

这是包装器

代码语言:javascript
复制
#include <sys/types.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>

extern int dummy();

void testc(){
    dummy();
}

运行时,会出现错误

代码语言:javascript
复制
xyz@xyz-HP:~/learn/go$ go run reader.go 
# command-line-arguments
In file included from $WORK/command-line-arguments/_obj/_cgo_export.c:2:0:
reader.go:30:14: error: conflicting types for ‘dummy’
In file included from reader.go:3:0,
                 from $WORK/command-line-arguments/_obj/_cgo_export.c:2:
./wrapper.c:6:12: note: previous declaration of ‘dummy’ was here
/tmp/go-build528677551/command-line-arguments/_obj/_cgo_export.c:8:7: error: conflicting types for ‘dummy’
In file included from reader.go:3:0,
                 from $WORK/command-line-arguments/_obj/_cgo_export.c:2:
./wrapper.c:6:12: note: previous declaration of ‘dummy’ was here
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-13 13:25:10

您不需要在C文件中声明dummy。下面是我如何拆分您的代码以使其工作。我将C函数导出到一个.h文件中,体本身放在一个.c文件中,并且只在go代码中包含h文件。

杜梅(dumy.h)

代码语言:javascript
复制
void testc();

dumy.c

代码语言:javascript
复制
#include <sys/types.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>


void testc(){
    dummy();
}

main.go

代码语言:javascript
复制
package main

// #cgo CFLAGS: -Wno-error=implicit-function-declaration
// #include <stdlib.h>
// #include "dummy.h"
import "C"

import "fmt"

//export dummy
func dummy() int {
    fmt.Println("hi you")
    return 0
}

func main() {
    C.testc()
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29606241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档