如何使用C输出函数调用C++函数
发布时间:2022-04-01 15:44:46 445
相关标签: # golang# c++
我正在使用索尼相机远程SDK创建WPF应用程序,并且能够调用SDK C++ DLL,并通过调用库函数初始化它。
现在我试图通过调用一个函数来枚举USB设备,它需要一个指向C++类的指针。
如果有任何方法可以从C++中实现这一点,那么似乎有许多不同的方法与C++语言中的C++库进行交互。
这是我试图使用的C++函数调用,但我不知道如何创建或访问ICrEnumCameraObjectInfo
如果可能的话,从C#开始上课。我确信我在一种方法中运行了一个方法,其中代理C对象被创建并传递给C++函数调用,但我现在似乎找不到这个引用。
SDK::ICrEnumCameraObjectInfo* camera_list = nullptr;
auto enum_status = SDK::EnumCameraObjects(&camera_list);
这些是相关的课程
class ICrCameraObjectInfo
{
public:
virtual void Release() = 0;
// device name
virtual CrChar* GetName() const = 0;
virtual CrInt32u GetNameSize() const = 0;
// model name
virtual CrChar *GetModel() const = 0;
virtual CrInt32u GetModelSize() const = 0;
// pid (usb)
virtual CrInt16 GetUsbPid() const = 0;
// device id
virtual CrInt8u* GetId() const = 0;
virtual CrInt32u GetIdSize() const = 0;
virtual CrInt32u GetIdType() const = 0;
// current device connection status
virtual CrInt32u GetConnectionStatus() const = 0;
virtual CrChar *GetConnectionTypeName() const = 0;
virtual CrChar *GetAdaptorName() const = 0;
// device UUID
virtual CrChar *GetGuid() const = 0;
// device pairing necessity
virtual CrChar *GetPairingNecessity() const = 0;
virtual CrInt16u GetAuthenticationState() const = 0;
};
class ICrEnumCameraObjectInfo
{
public:
virtual CrInt32u GetCount() const = 0;
virtual const ICrCameraObjectInfo* GetCameraObjectInfo(CrInt32u index) const = 0;
virtual void Release() = 0;
};
我有一个C#类来包装这个:
class SDK
{
[DllImport("crsdk\\Cr_Core.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern long GetSDKVersion();
[DllImport("crsdk\\Cr_Core.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern bool Init();
[DllImport("crsdk\\Cr_Core.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern bool Release();
[DllImport("crsdk\\Cr_Core.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern bool EnumCameraObjects(IntPtr cameraInfo);
}
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报