有偿 求 go 调用 c++

查看 109|回复 7
作者:chengiri   
不太会用 cgo ,能帮我正常调用的 bro ,请喝杯奶茶
package main
/*
#cgo CFLAGS: -I./include -x c++
#cgo LDFLAGS: -L./lib -lCameraSDK
#include
#include
#include
#include
*/
import "C"
func main() {
}
device_discovery.h
#pragma once
#include
#include
namespace ins_camera {
    /**
     * \class DeviceDiscovery
     * \brief a convenient class for discovery Insta360 camera devices.
     */
    class CAMERASDK_API DeviceDiscovery {
    public:
        /**
         * \brief get a list of available devices. This method may establish a connection with
         *        detected cameras to get some basic information such as serial_number.
         * \return a list of DeviceDescriptor describing detected cameras.
         *  Remember to call FreeDeviceDescriptors(std::vector descs)
         *  on the returned list to avoid memory leak.
         */
        std::vector GetAvailableDevices();
        /**
         * \brief free memory allocated for DeviceDescriptor
         */
        void FreeDeviceDescriptors(std::vector descs);
    private:
        std::vector GetAvailableUSBDevices();
        std::vector GetAvailableWifiDevices();
    };
}

include, vector, std, camera

anoyi   
ChatGPT 搞不定这个?
mightybruce   
你下面这个是 c++ 不是 C, 你要把 c++ 转成 C 的 接口, 才能调用
只有 C 的 bindings 是通用的
C 的代码,但要调用写好的 C++代码时,需要将 c++的类型配置为.lib 的静态库或是.dll 的动态库,然后通过 extern “c”调用
Linux 则是.so 的共享库
chai2010   
https://chai2010.cn/advanced-go-programming-book/ch2-cgo/ch2-08-class.html
xxq2334   
@mightybruce 这个大佬说的对
0o0O0o0O0o   
正要发 chai2010 写的 CGO 部分,发现他本人已经发了
totoro52   
我之前鼓动了好久的 CGO ,鼓动了两三天, 最后放弃,跟 2L 一样,直接编译成 so 库,动态加载就行,交互也超级容易,无语死, 至于 1L 说的 GPT 搞不定, 它是真的搞不定
Jirajine   
cpp 不是 c ,没法直接用 cgo 。你需要自己封装 c ffi ,或者 swig 能生成 bindings https://www.swig.org/Doc4.0/Go.html
您需要登录后才可以回帖 登录 | 立即注册

返回顶部