go 编写DLL

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) }

  

  

posted @ 2019-10-14 18:44  一大二王里  阅读(947)  评论(0编辑  收藏  举报