0
Новый товар здесь. Пытался позвонить идти функцию из C, но потерпел некоторые компилирование вопросыошибка при вызове go функция c c
Вот идут скрипт
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()
}
Вот обертка
#include <sys/types.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
extern int dummy();
void testc(){
dummy();
}
При запуске его, получил ошибку
[email protected]:~/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
Спасибо за быстрый ответ. Когда я запустил его, получил ошибку './main.go:33: неопределенная ссылка на' 'testc'' – packetie
@codingFun, как вы ее запускали? Я запускал его с помощью 'go build -o dummy &&./Dummy' –
' go build' вызывает 'cgo' за кулисами, генерируя файлы-обертки и т. Д. И т. Д. Вы можете запускать cgo непосредственно в коде, чтобы увидеть, что он делает. –