在带有 cgo 的 Go 中使用 Windows DLL
Using a Windows DLL in Go with cgo
我正尝试在 Windows 的 Go 项目中使用 hunspell 库。
我有the compiled Windows DLL (x64) and the corresponding header file(用C写的),但是我不能link它到Go程序。
到目前为止我尝试过的:
package main
//#cgo CFLAGS: -Id:/Go/HunSpellTest/build/
//#cgo LDFLAGS: -Ld:/Go/HunSpellTest/build/llibhunspell-1.7-0.dll -llibhunspell-1.7-0
// #include <stdlib.h>
// #include <hunspell.h>
import "C"
import (
"unsafe"
)
func main() {
C.Hunspell_create()
}
但是对于路径和文件名的任意组合(有扩展名,没有扩展名,没有版本号,有相对和绝对路径,使用斜杠或反斜杠)我得到了同样的错误:
undefined reference to __imp_Hunspell_create
我尝试将该路径添加到全局 PATH
变量或将 DLL 放入系统范围的文件夹中,但没有任何效果。
请注意,我可以 link 带有 syscall
包的 DLL 并调用 Hunspell_create
方法,但我想像 hunspellgo 包。
C.Hunspell_create()
缺少 const char* affpath
和 const char* dpath
参数。
也许您还遗漏了 Windows 上的一些 mingw-w64/msys2/cygwin
deps 包。 hunspellgo seem not tested on Windows. You needs a linux-like building system (such as mingw-w64/msys2/cygwin
) to compile hunspell on Windows. See at https://github.com/hunspell/hunspell#compiling-on-windows。在 Windows 上支持 cgo 的 Golang 还需要一些 gcc/g++
部门。
我正尝试在 Windows 的 Go 项目中使用 hunspell 库。
我有the compiled Windows DLL (x64) and the corresponding header file(用C写的),但是我不能link它到Go程序。
到目前为止我尝试过的:
package main
//#cgo CFLAGS: -Id:/Go/HunSpellTest/build/
//#cgo LDFLAGS: -Ld:/Go/HunSpellTest/build/llibhunspell-1.7-0.dll -llibhunspell-1.7-0
// #include <stdlib.h>
// #include <hunspell.h>
import "C"
import (
"unsafe"
)
func main() {
C.Hunspell_create()
}
但是对于路径和文件名的任意组合(有扩展名,没有扩展名,没有版本号,有相对和绝对路径,使用斜杠或反斜杠)我得到了同样的错误:
undefined reference to __imp_Hunspell_create
我尝试将该路径添加到全局 PATH
变量或将 DLL 放入系统范围的文件夹中,但没有任何效果。
请注意,我可以 link 带有 syscall
包的 DLL 并调用 Hunspell_create
方法,但我想像 hunspellgo 包。
C.Hunspell_create()
缺少 const char* affpath
和 const char* dpath
参数。
也许您还遗漏了 Windows 上的一些 mingw-w64/msys2/cygwin
deps 包。 hunspellgo seem not tested on Windows. You needs a linux-like building system (such as mingw-w64/msys2/cygwin
) to compile hunspell on Windows. See at https://github.com/hunspell/hunspell#compiling-on-windows。在 Windows 上支持 cgo 的 Golang 还需要一些 gcc/g++
部门。