go lang与c/c++的链接示例:

foo.hpp

//foo.hpp
#ifndef _FOO_HPP_
#define _FOO_HPP_ template<typename T>
T add(const T& lhs,const T& rhs)
{
return lhs+rhs;
} void display(); #endif //_FOO_HPP_

foo.cpp

//foo.cpp
#include "foo.hpp"
#include <iostream> void display()
{
std::cout<<"this message is from foo.cpp -display"<<std::endl;
}

foo_wrap.h

//foo_wrap.h
#ifndef _FOO_WRAP_H_
#define _FOO_WRAP_H_ #ifdef __cplusplus
extern "C" {
#endif //add function family
int add_int_wrap(int lhs,int rhs);
float add_float_wrap(float lhs,float rhs); //display some message
void display_wrap(); #ifdef __cplusplus
}
#endif
#endif //_FOO_WRAP_H_

foo_wrap.cpp

//foo_wrap.cpp
#include "foo_wrap.h"
#include "foo.hpp" //add function family
int add_int_wrap(int lhs,int rhs)
{
return add<int>(lhs,rhs);
}
float add_float_wrap(float lhs,float rhs)
{
return add<float>(lhs,rhs);
} //display
void display_wrap()
{
return display();
}

foo.go

//foo.go
package main // #cgo CFLAGS: -I./
// #cgo LDFLAGS: -L./ libfoo.a -lstdc++
// #include "foo_wrap.h"
import "C"
import "fmt" func main() {
//test add family
//int
var a,b int32 = 1,2
rsi := C.add_int_wrap(C.int(a),C.int(b))
fmt.Printf("C.add_int_wrap(%d,%d)=%d\n",a,b,rsi)
//float
var c,d float32 = 1.3,2.5
rsf := C.add_float_wrap(C.float(c),C.float(d))
fmt.Printf("C.add_int_wrap(%f,%f)=%f\n",c,d,rsf) //display
fmt.Println("message from C:")
C.display_wrap()
}

编译脚本build.sh:

#!/bin/sh
#build c/c++ source code
g++ -c foo.cpp
g++ -c foo_wrap.cpp
ar rcs libfoo.a foo.o foo_wrap.o #build go source code
go build foo.go
./foo

go与c++链接示例的更多相关文章

  1. https soap链接示例

    1.先安装soap扩展sudo yum install php-soap 2.安装openssL 3.function  issure($sn){//通过soap链接接口  进行确认是否是正确的sn码 ...

  2. Java下载HTTP URL链接示例

    这里以下载迅雷U享版为例. 示例代码: package com.zifeiy.snowflake.handle.filesget; import java.io.File; import java.i ...

  3. JavaScript实现url地址自动检测并添加URL链接示例代码

    写一个简单的聊天系统,发出Htpp的Url实现跳转加上a标签,下面是具体的实现,感兴趣的朋友不要错过 背景:写一个简单的聊天系统,发出Htpp的Url实现跳转加上a标签.  实现代码: 复制代码代码如 ...

  4. pymysql简单链接示例

    #!/usr/bin/env python # encoding: utf-8  # Date: 2018/6/24 import pymysql username = input('username ...

  5. 原创 C++应用程序在Windows下的编译、链接:第三部分 静态链接(二)

    3.5.2动态链接库的创建 3.5.2.1动态链接库的创建流程 动态链接库的创建流程如下图所示: 在系统设计阶段,主要的设计内容包括:类结构的设计以及功能类之间的关系,动态链接库的接口.在动态链接库中 ...

  6. Excel应该这么玩——6、链接:瞬间转移

    上一篇中提到通过命名表格来管理基础数据,这样会让数据更规范.如果有很多个基础数据表,需要查找或者修改其中的一个,可以通过名称框中下拉来定位. 但是当表格较多的时候,通过下拉选择的方式就不是很好定位了. ...

  7. Markdown使用简单示例

    标题示例: 标题一 #标题一 标题二 #标题二 标题三 ###标题三 标题四 ####标题四 标题五 #####标题五 标题六 ######标题六 连接示例 [![License](图片地址)](跳转 ...

  8. Markdown使用简单示例(每一个使用对应一个实际的markdown语法)

    1.标题示例:通过"#"数量表示几级标题.(一共只有1~6级标题,1级标题字体最大) 标题一 #标题一 标题二 #标题二 标题三 ###标题三 标题四 ####标题四 标题五 ## ...

  9. GSM/GPRS操作示例

    A6(GPRS)  博文转自安信科技: http://wiki.ai-thinker.com/gprs/examples 1.电话接收 相关指令 ATDxxxxx;//xxx为电话号码 示例 打电话 ...

随机推荐

  1. ros与下位机通信常用的c++ boost串口应用--22

    摘要: 原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/ 一.首先移植c++ boost 库: 1. 先去 Boost官网 下载最新的Boost版本, 我 ...

  2. Apache的https协议配置

    一.http协议和https协议的传输格式 http:文本格式的协议 https:二进制格式的协议 二.x509.3证书格式: 证书格式的版本号 证书序列号 证书签名算法 证书颁发者 有效期 持有者的 ...

  3. 多线程问题(JVM重排序)

    public class Test3 { private static boolean ready; private static int Number; private static class R ...

  4. phpwind8.7升级9.0.1过程(四)20130207升级到20141228

    每一次升级前都要注意备份 1.网站根目录的所有文件 2.网站的数据库 根据phpwind官方教程 更新到20130702版本成功并备份 更新到20140428版本成功并备份 20141228版本的更新 ...

  5. JAVA的UML

    1. UML概念 Unified Modeling Language (UML) 又称统一建模语言或标准建模语言 是一个支持模型化和软件系统开发的图形化语言 2. UML图示 UML2.2中一共定义了 ...

  6. how to change the AlexNet into FCNs ?

    How to change the AlexNet into FCNs ? FCNs is a network that only contain convolution layers and no ...

  7. PS CS5

    1.图层 背景图层:双击解锁 右下按键:新建图层.删除图层.新建图层组 眼睛-图层的显示与隐藏 缩略图大小选择:右上三角-面板设置 打开那个图片然后选择工具里面的移动工具然后按住鼠标拖动,拖到那个图片 ...

  8. Android 中使用自定义字体的方法

    1.Android系统默认支持三种字体,分别为:“sans”, “serif”, “monospace 2.在Android中可以引入其他字体 . <?xml version="1.0 ...

  9. C# Timer用法及实例详解

    C# Timer用法有哪些呢?我们在使用C# Timer时都会有自己的一些总结,那么这里向你介绍3种方法,希望对你了解和学习C# Timer使用的方法有所帮助. 关于C# Timer类  在C#里关于 ...

  10. CSS控制print打印样式

    来源:http://blog.csdn.net/pangni/article/details/6224533 一.添加打印样式 1. 为屏幕显示和打印分别准备一个css文件,如下所示:   用于屏幕显 ...