这两个步骤:
gcc -c main.c
gcc -o a.exe main.o MyThing.dll
非常适合制作可以调用 MyThing.dll 内部方法的 Windows exe。注意没有 -c 的 gcc main.c 会给出如下错误:
未定义对 MyThing_method 的引用
但是,当尝试使用 cgo 在 Golang 程序中使同一个系统工作时,我遇到了与使用没有 -c 的 gcc 时相同的 undefined reference 错误。我读过:
https://github.com/golang/go/wiki/WindowsDLLs
并且很想尝试使用 syscall.NewLazyDLL
但我的问题是我的 foo.go 文件正在调用 C.SomeMethod() 并且在该方法内它调用 DLL 内的方法。所以看来我需要一种方法来
go build -buildmode=c-share -o MyThing.dll
但我似乎无法获得正确的顺序。如果我可以在简单的 C 程序中做到这一点,那么 Golang 一定有办法做到这一点,我说得对吗?
最佳答案
我最终只是摆脱了这个额外的 c 文件并从 Go 中调用了我需要的方法,例如 https://github.com/golang/go/wiki/WindowsDLLs解释。效果很好。
关于c - Windows DLL 文件的正确构建模式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57120689/