小编Cla*_*ley的帖子

将指针传递给 Go DLL 系统调用中的指针

如果我有以下DllImport正在导入非 C# DLL 的 C#,并且我想将其移植到 Go,我将如何做呢?

    [DllImport("my.dll", EntryPoint = "Greet", CallingConvention = CallingConvention.Cdecl)]
    public static extern int Greet(IntPtr name, ref IntPtr greetings);
Run Code Online (Sandbox Code Playgroud)

我在弄清楚如何将指针传递给参数所需的指针时遇到了问题greetings(我假设因为类型是ref IntPtr,所以我对 C# 一点也不熟悉)。dll 函数将填充我提供的指针指向的内存,我将在后续系统调用中使用该指针。这是我到目前为止所得到的,

package main

import (
    "fmt"
    "syscall"
    "unsafe"
)

var (
    MyDll = syscall.MustLoadDLL("my.dll")
    greet = MyDll.MustFindProc("Greet")
)

func Greet(name string) error {
    nameP, err := syscall.UTF16PtrFromString(name)
    if err != nil {
        return err
    }
    // I need to provide a pointer to a pointer for greetings. How …
Run Code Online (Sandbox Code Playgroud)

c# dll system-calls go

5
推荐指数
1
解决办法
1006
查看次数

标签 统计

c# ×1

dll ×1

go ×1

system-calls ×1