Я написал код, который импортирует библиотеку C и отлично работает, когда все в одном файле. Но когда я разбиваю код на два файла, так что функция находится в другом файле, это не работает. Я запускаю Windows 10 x64, Go 1.14 и использую TDM-G CC -64.
Когда я выполняю go run .
, он возвращает эту проблему:
# v0
C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: $WORK\b001\_x008.o: in function `main':
./swemini.c:74: multiple definition of `main'; $WORK\b001\_cgo_main.o:/tmp/go-build/_cgo_main.c:1: first defined here
C:/TDM-GCC-64/bin/../lib/gcc/x86_64-w64-mingw32/9.2.0/../../../../x86_64-w64-mingw32/bin/ld.exe: $WORK\b001\_x015.o: in function `main':
./swetest.c:737: multiple definition of `main'; $WORK\b001\_cgo_main.o:/tmp/go-build/_cgo_main.c:1: first defined here
collect2.exe: error: ld returned 1 exit status
Это часть основных. go
package main
//#cgo CFLAGS: -I C:/Go-Project/src/Astrocal
//#cgo LDFLAGS: -L C:/Go-Project/src/Astrocal -lswedll64
//#include "swephexp.h"
import "C"
import "fmt"
func main() {
var xx [6]C.double
var serr string
var serr_C *C.char = C.CString(serr)
var ret C.int32
fmt.Printf("The OK constant is: %d\n", C.OK)
sweSetEphePath()
...
функций. go
package main
func sweSetEphePath() {
C.swe_set_ephe_path(C.CString("C:/sweph/ephe"))
}
Я уже пробовал импортировать библиотеку C в тот или иной файл , и одновременно. Это указывает на ту же проблему.
Вы можете мне помочь?