首页 / GO / go与c++链接示例
go与c++链接示例
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了go与c++链接示例,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1639字,纯文字阅读大概需要3分钟。
内容图文
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
原文:http://www.cnblogs.com/xylc/p/4418037.html
内容总结
以上是互联网集市为您收集整理的go与c++链接示例全部内容,希望文章能够帮你解决go与c++链接示例所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。