【问题标题】:How to make stdcall from Go如何从 Go 进行 stdcall
【发布时间】:2012-07-20 19:00:47
【问题描述】:

我有一个指向 COM 接口的指针,我想从它的虚拟表中获取函数指针并进行方法调用。为此,我需要进行 stdcall 方法调用。在 Go 中如何使用约定 stdcall 进行调用或在 cgo 中使用约定 stdcall 进行调用?

【问题讨论】:

    标签: com go stdcall cgo


    【解决方案1】:

    有关如何在 Windows 上调用 stdcall 函数的说明,请参阅“godoc syscall Proc”。请注意,*Proc.Call 确实分配/释放内存,因此,如果您关心效率,则应使用对应的 syscall.Syscall/syscall.Syscall6/syscall.Syscall9/... 函数。

    亚历克斯

    【讨论】:

    • 如果我使用非系统调用的 stdcall 调用约定进行普通函数调用,那么使用 Syscall() 有什么意义?
    • syscall.Syscall 是特定于平台的。在 Windows 上,它使用 stdcall 约定来调用 dll 内的函数。请参阅code.google.com/p/go/source/browse/src/pkg/syscall/… 了解如何执行此操作的许多示例。
    猜你喜欢
    • 2013-12-12
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-28
    相关资源
    最近更新 更多