• window下golang生成静态库给C语言调用


    buidmod为c-archive能在window下生成 ,c-shared则不行

    1.golang生成c-archive静态库

    main.go

    package main
    
    import "C"
    
    func main() {}
    
    //export Hello
    func Hello() string {
    	return "Hello"
    }
    
    //export Test
    func Test() {
    	println("export Test")
    }
    

    bd.bat 

    set GOARCH=amd64
    set GOBIN=C:gonewgo18in
    set GOCHAR=6
    set GOEXE=.exe
    set GOHOSTARCH=amd64
    set GOHOSTOS=windows
    set GOOS=windows
    set GOPATH=E:GOPROJECT
    set GORACE=
    set GOROOT=C:gonewgo18
    set GOTOOLDIR=C:gonewgo18pkg	oolwindows_amd64
    set CC=gcc
    set GOGCCFLAGS=-m64 -mthreads -fmessage-length=0
    set CXX=g++
    set CGO_ENABLED=1
    
    %GOBIN%/go build -x -v -ldflags "-s -w" -buildmode=c-archive -o main.a main.go
    

    生成main.a 以及main.h

    2.window下使用mingw64 gcc调用main.a

    main.c

    #include <stdio.h>
    #include "main.h"
     
    void main()
    {
        GoString str;
        str = Hello();   
        Test();
        printf("%d
    ",str.n);
    }
    

    bdc.bat

    gcc -o main.exe main.c main.a -lwinmm -lstdc++ -lws2_32 -lntdll 
    

    生成main.exe

      

  • 相关阅读:
    CentOS网络接口配置文件ifcfgeth详解
    python session
    Plateau problem
    Maximum subsequence sum
    回溯法解符号三角形
    切莫开一块地荒一块地
    BackTracking_Fixed sum for array elements
    DP_LCS
    Shortest distance between two arrays
    BSP 面试总结
  • 原文地址:https://www.cnblogs.com/coolyylu/p/7009699.html
Copyright © 2020-2023  润新知