在带有 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* affpathconst 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++ 部门。