Visual C++ - 在 C++/CLI 中使用 C 回调



我有什么

我在我的C++/CLI 应用程序中使用 Vimba C API众所周知,它可以工作,因为我的伴侣已经完成了它并且运行没有错误。

我已经完成了所有的导入/包含。我正在使用 API,除了一个错误。

手册说

在 API 手册中,有一些如何使用相机捕获图像的示例。确切地说,捕获完成时运行的回调函数是:

// The callback that gets executed on every filled frame
9  void VMB_CALL FrameDoneCallback( const VmbHandle_t hCamera , VmbFrame_t     *pFrame )
10 {
11     if ( VmbFrameStatusComplete == pFrame ->receiveStatus )
12     {
13         std::cout << "Frame successfully received" << std::endl;
14     }
15     else
16     {
17         std::cout << "Error receiving frame" << std::endl;
18     }
19 VmbCaptureFrameQueue( hCamera , pFrame , FrameDoneCallback );
20 }

错误

我以

完全相同的方式使用它(甚至更多,它来自手册,但它与我的同事相同,我复制了他的已知有效的代码)(我的行):

VmbCaptureFrameQueue( hCamera, &frameAsinc,  FrameDoneCallback );

但是,当我构建应用程序时,我得到:

Error   4   error C3867: 'Granja::Form1::FrameDoneCallback': falta la lista de argumentos de la llamada a la función; utilice '&Granja::Form1::FrameDoneCallback' para crear un puntero al miembro

这表示需要一个参数列表来调用函数。使用和...以创建指向成员的指针

但这对我来说毫无意义,因为回调需要一个指向函数的指针,所以它只需要方法的名称,而不是参数(另外,再一次,我的伴侣让它以这种方式工作,正如手册所说)。

对此有任何想法或指导吗?

提前谢谢你

PS:我不确定标签是否最合适,如果您认为它会更好,请编辑,谢谢。

绑定成员函数表达式的非法操作

这看起来像您正在尝试回调类成员函数。 它可以做到,但有点棘手。 你最好回调一个自由的全局函数,让它工作,然后研究如何回调类成员函数。

您发布的代码是否是生成错误的实际代码? 似乎可能是 API 手册中的代码。或来自您的伙伴代码。 您需要让我们查看实际导致问题的代码。

相关内容

  • 没有找到相关文章

最新更新