这两个步骤:
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做到这一点的方法吗?
答案 0 :(得分:0)
我最终只是摆脱了这个额外的c文件,并像https://github.com/golang/go/wiki/WindowsDLLs所述从Go调用了我需要的方法。效果很好。