ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#调用Go版DLL

2020-05-02 11:01:58  阅读:309  来源: 互联网

标签:inParam C# hexString outlen int outstr Go byte DLL


private void button6_Click(object sender, EventArgs e)
{
    byte[] inParam = null;
    IntPtr ptr = IntPtr.Zero;
    int outlen = -1;
    string outstr = "";

    inParam = Encoding.UTF8.GetBytes("执着不可取");

    int ret = Inwhtl_DLL.TestApi(inParam,ref ptr, ref outlen);

    if(outlen > 0)
    {
        outstr = Marshal.PtrToStringAnsi(ptr, (int)outlen);
        byte[] byt = strToToHexByte(outstr);
        outstr = Encoding.UTF8.GetString(byt);

        MessageBox.Show(outstr);

    }
}

/// <summary>
/// 字符串转16进制字节数组
/// </summary>
/// <param name="hexString"></param>
/// <returns></returns>
private static byte[] strToToHexByte(string hexString)
{
    hexString = hexString.Replace(" ", "");
    if ((hexString.Length % 2) != 0)
        hexString += " ";
    byte[] returnBytes = new byte[hexString.Length / 2];
    for (int i = 0; i < returnBytes.Length; i++)
        returnBytes[i] = Convert.ToByte(hexString.Substring(i * 2, 2), 16);
    return returnBytes;
}


package main

import "C"
import (
    "e.coding.net/jiftle/inwarehousetool/checktool/chktl"
    "encoding/hex"
    "fmt"
    "os"
)

//export Sum
func Sum(a int, b int) int {
    //最简单的计算和
    return a + b
}

//export TestApi
func TestApi(inParam *C.char, outParam **C.char, outlen *C.int) int {
    // 输入参数
    in := C.GoString(inParam)

    // 注意事项
    s := "1122ABC你" + in

    bytS := []byte(s)
    s = hex.EncodeToString(bytS)

    // 输出参数
    *outParam = C.CString(s)
    var noutlen int
    noutlen = len(C.GoString(*outParam))
    *outlen = C.int(noutlen)

    return 0
}

 

 

https://www.cnblogs.com/Leo_wl/p/12075987.html

 

标签:inParam,C#,hexString,outlen,int,outstr,Go,byte,DLL
来源: https://www.cnblogs.com/jiftle/p/12817334.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有