为了账号安全,请及时绑定邮箱和手机立即绑定

通过 cgo 在 Go 中使用 Windows DLL

通过 cgo 在 Go 中使用 Windows DLL

Go
神不在的星期二 2022-07-18 17:20:37
我正在尝试在 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。
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

C.Hunspell_create()缺失const char* affpathconst 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++依赖。


查看完整回答
反对 回复 2022-07-18
  • 1 回答
  • 0 关注
  • 322 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信