CGO的使用

編寫最簡單的輸出

Main.go

package main

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

func main() {
	C.puts(C.CString("hello\n"))
}

運行

$ go run Main.go 
hello

自定義函數

Main.go

package main

/*
#include <stdio.h>

void hi()
{
    printf("hello,wsdadas\n");
}
*/
import "C"

func main() {
	C.hi()
}

運行

$ go run Main.go 
hello,wsdadas

使用頭文件

目錄結構

$ ls
go.mod  go.sum  hello.c  hello.h  Main.go

hello.h

#pragma once

void hi();

hello.c

#include "hello.h"

#include <stdio.h>

void hi()
{
    printf("hello,wsdadas\n");
}

Main.go

package main

//void hi();
import "C"

func main() {
	C.hi()
}

運行

$ go run .
hello,wsdadas

使用c++

$ ls
go.mod  go.sum  hello.cpp  hello.h  Main.go

hello.h

#pragma once

void hi();

hello.cpp

#include <iostream>

extern "C" {
#include "hello.h"
}

void hi()
{
    std::cout<<"hello,world..."<<std::endl;
}

Main.go

package main

//void hi();
import "C"

func main() {
	C.hi()
}

運行

$ go run .
hello,world...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章