我正在使用 Go 构建一个 DLL。
我无法实现 windows DllMain entry point。
我的目标是当应用程序通过LoadLibrary
调用该Test
方法加载 dll 时,DllMain
也将调用该方法。然而,目前该应用程序有点陷入僵局,没有任何反应。
该应用程序是非常简单的python代码
# App code
import ctypes
lib = ctypes.CDLL("./mydll.dll")
lib.Test()
笔记:
我正在使用
go version go1.16.4 windows/amd64
并使用
go build -o mydll.dll --buildmode=c-shared
如果我删除
DllMain
,一切正常,应用程序可以Test
成功调用该方法。我知道我可以指定
switch
条件DllMain
,例如附加进程、分离进程……等等,我只是想让它尽可能简单。
//Go Code
package main
import "C"
import (
"fmt"
"os"
)
//export Test
func Test() {
os.Create("fooFile")
}
//export DllMain
func DllMain(a uintptr, b uint32, c uintptr) int32 {
return 1
}
func main() {
}