美文网首页
CGO封装模版

CGO封装模版

作者: Lyudmilalala | 来源:发表于2020-05-16 01:33 被阅读0次

C++ API classes

C++ function header -- test.h

#ifndef __TEST_H__
#define __TEST_H__

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <iostream>

class Test {
public:
    void SayHello(const char* s);
};

#endif

C++ function class -- test.cpp

#include <test.h>

void Test::SayHello(const char* s) {
    std::cout << s << " from test class.\n";
}

C wrapper for all C++ functions

C wrapper header -- cwrap.h

#ifndef __CWRAP_H__
#define __CWRAP_H__

#ifdef __cplusplus
extern "C" {
#endif
void SayHelloC(const char* s);
#ifdef __cplusplus
}
#endif

#endif

C wrapper class -- cwrap.cpp

#include "test.h"
#include "cwrap.h"

void SayHelloC(const char* s) {
    Test ctx;
    ctx.SayHello(s);
}

Go class imports the C++ library

main.go

package main

/*
#include <cwrap.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
*/
import "C"
import "fmt"

func main() {
    SayHelloC("Hello World C++")
}

func SayHelloC(msg string) {
    C.SayHelloC(C.CString(msg))
}

//export SayHelloGo
func SayHelloGo(msg *C.char) {
    fmt.Print(C.GoString(msg))
}

相关文章

  • CGO封装模版

    C++ API classes C++ function header -- test.h C++ functio...

  • 满邻私房菜-小程序之开篇

    1.模版方法使用 这是一个模版方法,使用封装 可以声明一个方法,这个方法可以在直接在模版

  • CGO使用

    参考文章: http://golang.org/cmd/cgo is the primary cgo docume...

  • CGO 初步认知和基本数据类型转换

    CGO 是什么? CGO 是 GO 语言里面的一个特性,CGO 属于 GOLANG 的高级用法,主要是通过使用 G...

  • golang win10交叉编译

    写了一个bat文件 set CGO_ENABLED=0 关闭CGO

  • CGO编程

    1)什么是CGO编程?2)CGO语法3)相关资料 一、什么是CGO编程?简单说就是GO语言代码中可以编写C代码和调...

  • cgo

    golang与C有着千丝万缕的联系,go代码中可以调用C代码由于项目需要,新使用的golang语言需要调用C语言写...

  • cgo

    三种方式 在头部嵌入c代码 头部引用.h文件,实际调用动态库,需要指定路径(当前项目使用这种形式) 直接引用文件,...

  • cgo

    cgo cgo是用来在Go语言中调用C语言的工具 Go语言调用C语言 简单C语言函数 在Go语言中需要通过impo...

  • cgo

    转载一篇CGO的文章 Go 与 C 的桥梁:cgo 入门,剖析与实践[https://zhuanlan.zhihu...

网友评论

      本文标题:CGO封装模版

      本文链接:https://www.haomeiwen.com/subject/bqwkohtx.html