J'ai essayé cgo

About Quand je fais du C / C ++, j'aimerais souvent pouvoir l'écrire en golang. J'ai écrit Hello () en C / C ++ de golang à [cgo](https://golang.org/cmd/ Appelons-le avec cgo /).

Environnement que j'ai essayé

version
Ubuntu 17.10
gcc 7.2.0
golang 1.8.3

Hello World en langage C

c_hello.h


#ifndef C_HELLO_H_
#define C_HELLO_H_

void Hello(const char*);

#endif

c_hello.c


#include <stdio.h>
#include "c_hello.h"

void Hello(const char* name) {
  printf("hello %s\n", name);
};

c_hello.go


package main

/*
#cgo LDFLAGS: ./chello.o
#include "chello.h"
*/
import "C"

func main() {
	C.Hello(C.CString("Qiita"))
}

Compiler et exécuter

% gcc c_hello.c -c
% go run c_hello.go
% hello Qiita

Hello World en C ++

hello.hpp


#ifndef HELLO_H_
#define HELLO_H_

#ifdef __cplusplus
extern "C" {
#endif

void Hello(const char*);

#ifdef __cplusplus
}
#endif

#endif

hello.cpp


#include <cstdio>
#include "hello.hpp"

void Hello(const char* name) {
  std::printf("hello %s\n", name);
};

hello.go


package main

/*
#cgo LDFLAGS: ./hello.o
#include "hello.hpp"
*/
import "C"

func main() {
	C.Hello(C.CString("Qiita"))
}

Compiler et exécuter

% gcc -lstdc++ hello.cpp -c
% go run hello.go
% hello Qiita

Impressions

Recommended Posts

J'ai essayé cgo
J'ai essayé de gratter
J'ai essayé PyQ
J'ai essayé le moulin à papier
J'ai essayé Django
J'ai essayé spleeter
J'ai essayé d'utiliser paramétré
J'ai essayé d'utiliser argparse
J'ai essayé d'utiliser la mimesis
J'ai essayé d'utiliser anytree
J'ai essayé d'exécuter pymc
J'ai essayé le spoofing ARP
J'ai essayé d'utiliser Summpy
J'ai essayé Python> autopep8
J'ai essayé d'utiliser coturn
J'ai essayé d'utiliser Pipenv
J'ai essayé d'utiliser matplotlib
J'ai essayé d'utiliser "Anvil".
J'ai essayé d'utiliser Hubot
J'ai essayé d'utiliser ESPCN
J'ai essayé d'utiliser openpyxl
J'ai essayé le deep learning
J'ai essayé AWS CDK!
J'ai essayé d'utiliser Ipython
J'ai essayé de déboguer.
J'ai essayé d'utiliser PyCaret
J'ai essayé d'utiliser cron
J'ai essayé d'utiliser ngrok
J'ai essayé d'utiliser face_recognition
J'ai essayé d'utiliser Jupyter
J'ai essayé de déplacer EfficientDet
J'ai essayé Python> décorateur
J'ai essayé Auto Gluon
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser jinja2
J'ai essayé AWS Iot
J'ai essayé l'optimisation bayésienne!
J'ai essayé d'utiliser du folium
J'ai essayé d'utiliser la fenêtre de temps
J'ai essayé les réseaux d'itération de valeur
J'ai essayé de gratter avec Python
J'ai essayé la classification d'image d'AutoGluon
J'ai essayé d'apprendre PredNet
[J'ai essayé d'utiliser Pythonista 3] Introduction
J'ai essayé d'utiliser easydict (mémo).
J'ai essayé la reconnaissance faciale avec Face ++
J'ai essayé d'utiliser RandomForest
J'ai essayé le clustering avec PyCaret
J'ai essayé d'utiliser BigQuery ML
J'ai essayé "K-Fold Target Encoding"
J'ai essayé d'implémenter PCANet
[J'ai essayé] Nand2 Tetris Chapitre 6
J'ai essayé la bibliothèque changefinder!
J'ai essayé l'extension C de Python
J'ai essayé de présenter Pylint
J'ai essayé le Sql Upsert de Pandas