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. 文件API及其特点

    Internet Explorer 10 和使用 JavaScript 的 Windows 应用商店应用引入了对文件 API 的支持.文件 API 是万维网联合会 (W3C) 的一个 Web 规范草案 ...

  2. linux中进程控制

    1.进程标识 每个进程都有一个非负整型表示的唯一的进程ID.进程ID标识符总是唯一的.  虽然进程ID是唯一的,但某个ID被回收后,ID号是可以复用的. ID为0的进程通常是调度进程(其常常被称交换进 ...

  3. Android 中解析 JSON

    有什么不懂的可以去官网去看看:www.json.org 在google android中也有关于解析JSON的类库:JsonReader,但是只能在3.0以后的版本中才可以用,在这里我们用google ...

  4. HDU-4747 Mex(线段树区间更新)

    题目大意:给一个长度为n的整数序列,定义mex(i,j)表示区间[i,j]中没有出现过的最小非负整数,求sigma(mex(i,j)),即序列中所有连续非空子区间的mex之和. 题目分析: answe ...

  5. 【BZOJ1011】【HNOI2008】遥远的行星

    奇奇怪怪突然出戏的奇葩题 原题: 直线上N颗行星,X=i处有行星i,行星J受到行星I的作用力,当且仅当i<=AJ.此时J受到作用力的大小为 Fi->j=Mi*Mj/(j-i) 其中A为很小 ...

  6. matlab绘图+计算心得

    Matlab 常用于做一些计算实验和绘图,我主要用matlab来绘图件.Matlab 可以用GUI界面来完成绘图,但是既然能用鼠标完成的绘图,那么一定能用代码命令来完成绘图,个人比较喜欢用命令来完成m ...

  7. MAVEN build ,GOAL plugin ,execution

    http://www.avajava.com/tutorials/lessons/what-are-the-phases-of-the-maven-clean-lifecycle.html https ...

  8. Expect安装方法

    Expect安装方法 http://bluethink.iteye.com/blog/1079044 Tcl脚本SSHITeyeUnix  Expect是基于Tcl语言的一种脚本语言,其实无论是交互还 ...

  9. SecureCRT注册机使用方法

    SecureCRT_7.3注册机激活步骤如下: 1)准备工作 安装好SecureCRT软件, 下载并得到该注册机. 2)保持SecureCRT软件关闭(运行的话会提示你正在运行的,关闭就好). 3)将 ...

  10. linux命令单次或组合样例

    ###解压命令.tar.gz    格式解压为    tar   -zxvf   xx.tar.gz.tar.bz2   格式解压为     tar   -jxvf    xx.tar.bz2 ### ...