go 编写DLL

Wesley13
• 阅读 725
package mian

import "C"

//export Min
func Min(a,b) int32{
   if a>b{
     return int32(b)
  } 
      return int32(a)
}

  编译命令

      go build -ldflags "-s -w" -buildmode=c-shared -o net.dll main.go

package main

/*
#include <stdio.h>
#include <stdlib.h>
*/
import "C"

import (
    "unsafe"
)

func main() {
    for i := 1; i < 999; i++ {
        cstr := C.CString("Hello, world")

        C.free(unsafe.Pointer(cstr))//释放内存 必须引入stdlib.h 标准库
    }

}

//返回文本//export Tostring
func Tostring(a *C.char) *int32{
    text := C.GoString(a)
    cstr := C.CString(text)
    //C.free(unsafe.Pointer(cstr))
    return (*int32)(unsafe.Pointer(cstr))
}

//export Getslice//传输字节集
func Getslice(CC **C.char,)int{
   aa:="fdfdfsfdsfdsfdsfdsfsd"
   zz:=[]byte(aa)
   *CC=(*C.char)(unsafe.Pointer(C.CBytes(zz)))
   return len(zz)
}
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
2年前
vue element table 表头添加图标
!(https://oscimg.oschina.net/oscnet/189d567e07e0844612470867b06a35c0aaf.jpg)!(https://oscimg.oschina.net/oscnet/dc3b454d663d8618924b78796345a145b3f.jpg)1<template
Wesley13 Wesley13
2年前
.net程序反编译工具(ILSpy)
ILSpy是SharpDevelop小组的反编译工具,ILSPY这个开源工具的目的就是代替reflector的,它可以反编译出比reflector更好的C代码。PC官方版!(https://oscimg.oschina.net/oscnet/b35fba9fc6ada998d12775b18290c2348dc.png)C反编译工具ilsp
Stella981 Stella981
2年前
Golang 开发环境搭建
Golang是Google发布的开发语言,Go编译的程序速度可以媲美C/C。安装sudoaptgetinstallgolangsudoaptgetinstallgolanggo.tools使用编译运行程序gorunmain.go查看命令文
Stella981 Stella981
2年前
Android So动态加载 优雅实现与原理分析
背景:漫品Android客户端集成适配转换功能(基于目标识别(So库35M)和人脸识别库(5M)),导致apk体积50M左右,为优化客户端体验,决定实现So文件动态加载.!(https://oscimg.oschina.net/oscnet/00d1ff90e4b34869664fef59e3ec3fdd20b.png)点击上方“蓝字”关注我
Stella981 Stella981
2年前
Sentinel 1.7.2 发布,完善开源生态及扩展性
多样化的适配模块到目前为止,Sentinel已覆盖微服务、APIGateway和ServiceMesh三大板块的核心生态,同时多语言已推出Java、C、Go三种语言的原生实现。!78636450_ef3a4b00_78da_11ea_89ce_c7a2b58c2deb(https://yqfile.alicd
Stella981 Stella981
2年前
Jenkins流水线即代码之扩展共享库
!(https://oscimg.oschina.net/oscnet/ab8ee75c43cb1a3fd0fac241648861b03c5.gif)!(https://oscimg.oschina.net/oscnet/1a35fdf03222f188f706711d2b43eae6a14.gif)!(https://osci
Wesley13 Wesley13
2年前
IJCAI2020 图相关论文集
↑公众号关注“GraphAI”专注于图机器学习IJCAI2020图相关论文集!(https://oscimg.oschina.net/oscnet/538c1eb7d78b304723ca074c35b6cc896f2.png)
Wesley13 Wesley13
2年前
JNI使用方式
作用:使Java能够同C/C动态库(dll)进行交互。编写过程:    1、native接口类,其中方法用native修饰,没有方法体。    2、通过javah命令编译native接口类,会生成.h的头文件。    3、用C编写一个dll文件        (1)需要引入刚生成的.h头文件        (2)实现头文件