Windows DLL文件的正确的构建模式是什么?

时间:2019-07-19 23:50:33

标签: c go gcc dll cgo

这两个步骤:

gcc -c main.c
gcc -o a.exe main.o MyThing.dll

使Windows exe可以调用MyThing.dll中的方法非常有用。注意不带-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做到这一点的方法吗?

1 个答案:

答案 0 :(得分:0)

我最终只是摆脱了这个额外的c文件,并像https://github.com/golang/go/wiki/WindowsDLLs所述从Go调用了我需要的方法。效果很好。