我写了一个导入C库的代码,当所有代码都在一个文件中时,它可以正常工作。但是,当我将代码拆分为两个文件,从而使该功能位于另一个文件中时,它将无法使用。 我运行Windows 10 x64,运行1.14,然后使用TDM-GCC-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
这是main.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()
...
functions.go
package main
func sweSetEphePath() {
C.swe_set_ephe_path(C.CString("C:/sweph/ephe"))
}
我已经尝试过同时导入C库到一个或另一个文件中。它表示相同的问题。
你能帮我吗?