Windows DLL 文件的正确构建模式是什么?
What is correct go build mode for Windows DLL file?
这两个步骤:
gcc -c main.c
gcc -o a.exe main.o MyThing.dll
制作可以在 MyThing.dll 中调用方法的 windows exe 非常有用。注意没有 -c 的 gcc main.c 会给出如下错误:
undefined reference to MyThing_method
但是,当尝试使用 cgo 在 Golang 程序中使同一个系统工作时,我遇到了与在没有 -c 的情况下使用 gcc 时一样的未定义引用错误。我读过:
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 文件,并像 https://github.com/golang/go/wiki/WindowsDLLs 解释的那样从 Go 调用了我需要的方法。效果很好。
这两个步骤:
gcc -c main.c
gcc -o a.exe main.o MyThing.dll
制作可以在 MyThing.dll 中调用方法的 windows exe 非常有用。注意没有 -c 的 gcc main.c 会给出如下错误:
undefined reference to MyThing_method
但是,当尝试使用 cgo 在 Golang 程序中使同一个系统工作时,我遇到了与在没有 -c 的情况下使用 gcc 时一样的未定义引用错误。我读过:
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 文件,并像 https://github.com/golang/go/wiki/WindowsDLLs 解释的那样从 Go 调用了我需要的方法。效果很好。