1 cplus.h
class A {
public:
virtual void test();
};
class B: public A {
public:
void test();
};
2 cplus.cpp
#include "cplus.h"
#include
using namespace std;
void A::test(){
cout<
}
void B::test(){
cout<
}
3 ctest.h
#ifndef __cplusplus
extern "C" {
#endif
void test();
#ifdef __cplusplus
}
#endif
4 ctest.cpp
#include "ctest.h"
#include "cplus.h"
void test(){
A *a = new B();
a->text();
}
5 bulid.sh
g++ -o cplus.o -c cplus.cpp
g++ -o ctest.o -c ctest.cpp
ar r libc_test.so c.o cplus.o
6 test.go
package main
//#cgo LDFLAGS: -L . -lc_test -lstdc++
//#cgo CFLAGS: -I ./
//#include "ctest.h"
import "C"
import "fmt"
func main(){
fmt.Println("vim-go")
C.test()
}
7 go build test.go
本文介绍了一个使用C++与Go语言进行跨语言调用的例子。具体实现包括定义C++基类A和派生类B,并通过Go语言进行调用。此示例涉及C++类的定义、实现及Go语言如何利用C标准库接口调用C++代码。
1010

被折叠的 条评论
为什么被折叠?



