About Wenn ich C / C ++ mache, wünschte ich mir oft, ich könnte es in Golang schreiben. Ich schrieb "Hello ()" in C / C ++ von Golang nach cgo. Nennen wir es mit cgo /).
version | |
---|---|
Ubuntu | 17.10 |
gcc | 7.2.0 |
golang | 1.8.3 |
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"))
}
Kompilieren und ausführen
% gcc c_hello.c -c
% go run c_hello.go
% hello Qiita
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"))
}
Kompilieren und ausführen
% gcc -lstdc++ hello.cpp -c
% go run hello.go
% hello Qiita
Recommended Posts