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:\gonew\go18\bin
set GOCHAR=6
set GOEXE=.exe
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOOS=windows
set GOPATH=E:\GOPROJECT\
set GORACE=
set GOROOT=C:\gonew\go18\
set GOTOOLDIR=C:\gonew\go18\pkg\tool\windows_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\n",str.n);
}

bdc.bat

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

生成main.exe

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM