通过 cgo 在 Go 中使用 Windows DLL

我正在尝试在 Windows 上的 Go 项目中使用 hunspell 库。


我有已编译的 Windows DLL (x64)和相应的头文件(用 C 编写),但我无法将它链接到 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 放入系统范围的文件夹中,但没有任何效果。


请注意,我可以将 DLL 与syscall包链接并调用该Hunspell_create方法,但我想使用hunspellgo包中的 lib。


神不在的星期二
浏览 323回答 1
1回答

米脂

C.Hunspell_create()缺失const char* affpath和const char* dpath参数。也许您还缺少mingw-w64/msys2/cygwinWindows 上的一些 deps 包。hunspellgo似乎没有在 Windows 上测试过。您需要一个类似 linux 的构建系统(例如mingw-w64/msys2/cygwin)来在 Windows 上编译 hunspell。请参阅https://github.com/hunspell/hunspell#compiling-on-windows。在 Windows 上支持 cgo 的 Golang 也需要一些gcc/g++依赖。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go