Я пытаюсь запустить ОЦП для golang со следующим примером (учитывая при go-wiki -> Global Functions):golang: ОЦП ехЬегп не работает
foo.go
файл:
package gocallback
import "fmt"
/*
#include <stdio.h>
extern void ACFunction();
*/
import "C"
//export AGoFunction
func AGoFunction() {
fmt.Println("AGoFunction()")
}
func Example() {
C.ACFunction()
}
foo.c
файл:
#include "_cgo_export.h"
void ACFunction() {
printf("ACFunction()\n");
AGoFunction();
}
При запуске этого примера появляется следующая ошибка:
# command-line-arguments
/tmp/go-build770916112/command-line-arguments/_obj/foo.cgo2.o: In function `_cgo_3234419c4c2a_Cfunc_ACFunction':
./foo.go:36: undefined reference to `ACFunction'
collect2: ld returned 1 exit status
Я не могу проследить это. Почему ACFunction
является undefined
? или я чего-то не хватает?
go version
: идти версия go1.1.2 линукс/386
Ваш сокращенный пример, похоже, подходит для меня. В вашем файле 'foo.go' нет 36 строк, возможно ли, что ошибка существует в некотором коде, который вы удалили? –
Нет, я не удалял код. Эта часть линии также смутила меня. Как вы компилируете cgo? Я использую 'go run foo.go'. Есть ли какая-либо конкретная версия gcc или 32-разрядная/64-разрядная машина или что-нибудь еще? –
Я использовал 'go build packagename'. Я тестировал версии 1.1.2 и 1.2 на Linux/amd64. –