小编Ale*_*ias的帖子

使用生成的 Golang DLL 返回字符串或 *C.Char

我一直在尝试关注z505/goDLL 存储库,但遇到了一个大问题。该方法无法返回字符串,我无法读取结果的输出变量。

这是我目前使用的代码(Go)(完整代码https://play.golang.org/p/Yfg85DCeMLh

//export PrintHello2
func PrintHello2(Input *C.char, Output **C.char) int32 {
    fmt.Println(C.GoString(Input))
    *Output = C.CString(fmt.Sprintf("From DLL: Hello, %s!\n", C.GoString(Input)))
    fmt.Println("Message: ", C.GoString(*Output))
    return 1
}

//export PrintHello3
func PrintHello3(Input *C.char, Output *int32) int32 {
    fmt.Println(C.GoString(Input))
    *Output = 3
    fmt.Println("Value: ", *Output)
    return 0
}
Run Code Online (Sandbox Code Playgroud)

C# 测试代码

class Program
{
    [DllImport("goDLL.dll", CharSet = CharSet.Unicode)]
    public static extern int PrintHello2(byte[] data, ref byte[] output);

    [DllImport("goDLL.dll", CharSet = CharSet.Unicode)]
    public static extern int PrintHello3(byte[] data, ref int output); …
Run Code Online (Sandbox Code Playgroud)

.net c# go cgo

2
推荐指数
1
解决办法
1791
查看次数

标签 统计

.net ×1

c# ×1

cgo ×1

go ×1