返回

如何使用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);


}
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像