
不太会用 cgo ,能帮我正常调用的 bro ,请喝杯奶茶
package main /* #cgo CFLAGS: -I./include -x c++ #cgo LDFLAGS: -L./lib -lCameraSDK #include <camera/camera.h> #include <stdlib.h> #include <camera/device_discovery.h> #include <camera/photography_settings.h> */ import "C" func main() { } device_discovery.h
#pragma once #include <camera/ins_types.h> #include <vector> 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<DeviceDescriptor> descs) * on the returned list to avoid memory leak. */ std::vector<DeviceDescriptor> GetAvailableDevices(); /** * \brief free memory allocated for DeviceDescriptor */ void FreeDeviceDescriptors(std::vector<DeviceDescriptor> descs); private: std::vector<DeviceDescriptor> GetAvailableUSBDevices(); std::vector<DeviceDescriptor> GetAvailableWifiDevices(); }; } 1 anoyi 2024-02-26 15:26:55 +08:00 ChatGPT 搞不定这个? |
2 mightybruce 2024-02-26 15:29:34 +08:00 你下面这个是 c++ 不是 C, 你要把 c++ 转成 C 的 接口, 才能调用 只有 C 的 bindings 是通用的 C 的代码,但要调用写好的 C++代码时,需要将 c++的类型配置为.lib 的静态库或是.dll 的动态库,然后通过 extern “c”调用 Linux 则是.so 的共享库 |
3 chai2010 2024-02-26 15:46:06 +08:00 |
4 xxq2334 2024-02-26 19:06:16 +08:00 via Android @mightybruce 这个大佬说的对 |
5 0o0O0o0O0o 2024-02-26 19:22:41 +08:00 正要发 chai2010 写的 CGO 部分,发现他本人已经发了 |
6 MIUIOS 2024-02-26 19:42:34 +08:00 我之前鼓动了好久的 CGO ,鼓动了两三天, 最后放弃,跟 2L 一样,直接编译成 so 库,动态加载就行,交互也超级容易,无语死, 至于 1L 说的 GPT 搞不定, 它是真的搞不定 |
7 Jirajine 2024-02-26 19:51:37 +08:00 cpp 不是 c ,没法直接用 cgo 。你需要自己封装 c ffi ,或者 swig 能生成 bindings https://www.swig.org/Doc4.0/Go.html |
8 liberize 2024-02-27 08:26:04 +08:00 via Android 写一些 C 接口包装一下 C++接口,注意用 extern "C" { } 把这些 C 接口包起来 |
9 dog82 2024-02-27 09:17:48 +08:00 曲线救国,把 c++封装成 restful |
10 hu8245 2024-02-27 13:12:17 +08:00 你需要对 c++ 导出为 C 符号有点了解。你都 import "C" 了,cpp 的符号肯定不行啊。https://zhuanlan.zhihu.com/p/123269132 |
11 uiluck 2024-02-27 16:13:28 +08:00 利用 rpc 、http 呗 |
12 tangtang369 2024-02-27 16:39:40 +08:00 直接 socket 封装个通信接口就行 就是部署的时候多了一个软件 但是功能实现起来更快 |