【发布时间】:2021-08-30 07:25:53
【问题描述】:
我正在使用 Go 构建一个 DLL。
我无法实现 windows DllMain entry point。
我的目标是当应用程序通过LoadLibrary 加载dll 以调用Test 方法时,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方法。 -
我知道我可以在
DllMain下使用switch来指定诸如进程附加、分离等条件,我只是想让它尽可能简单。
//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() {
}
【问题讨论】:
标签: python windows go dll dllmain