go與c++連結樣本

來源:互聯網
上載者:User

標籤:

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 __cplusplusextern "C" {#endif//add function familyint add_int_wrap(int lhs,int rhs);float add_float_wrap(float lhs,float rhs);//display some messagevoid display_wrap();#ifdef __cplusplus}#endif#endif //_FOO_WRAP_H_

foo_wrap.cpp

//foo_wrap.cpp#include "foo_wrap.h"#include "foo.hpp"//add function familyint 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);}//displayvoid display_wrap(){return display();}

foo.go

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

編譯指令碼build.sh:

#!/bin/sh
#build c/c++ source codeg++ -c foo.cppg++ -c foo_wrap.cppar rcs libfoo.a foo.o foo_wrap.o#build go source codego build foo.go./foo

go與c++連結樣本

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.