在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/C  C++  GO/ c如何把函數(shù)傳遞到go語(yǔ)言里面去?

c如何把函數(shù)傳遞到go語(yǔ)言里面去?

go可以接收到這個(gè)函數(shù),然后回調(diào)

回答
編輯回答
別傷我
//testgo.h
#ifdef __cplusplus
extern "C"{
#endif
extern long getaddr();
extern int calladdr(long addr);
#ifdef __cplusplus
}
#endif
//testgo.cpp
#include <stdio.h>
#include "testgo.h"

typedef int(*pfun)();

int testfunc(){
    return 123654;
}

long getaddr() {
    return (long)testfunc;
}

int calladdr(long addr){
    return ((pfun)addr)();
}
//test.go
package main

// #include "testgo.h"
// #cgo LDFLAGS: ${SRCDIR}/testgo.so -lstdc++
import "C"
import "fmt"

func main() {
    addr := C.getaddr()
    fmt.Println("addr is", addr)
    fmt.Println("call ret:", C.calladdr(addr))
}

g++ -shared -fPIC testgo.cpp -o testgo.so
go run test.go

通過(guò)getaddr取得testfunc的函數(shù)地址,再通過(guò)calladdr調(diào)用地址對(duì)應(yīng)的函數(shù),你看看是不是你想要的

2017年7月30日 18:27