在 C++/CLI 中使用 C 回调
Using C callback in C++/CLI
我有什么
我在我的 C++/CLI 应用程序中使用 Vimba C API。它已知可以工作,因为我的伙伴已经完成并且运行没有错误。
我已经完成了所有 imports/include。我正在使用 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:我不确定这些标签是否最合适,如果您认为更好,请编辑,谢谢。
对绑定成员函数表达式的非法操作
您似乎正试图回调 class 成员函数。可以做到,但有点棘手。你最好回调一个自由的全局函数,让它工作,然后研究如何回调一个 class 成员函数。
您发布的代码是产生错误的实际代码吗?看起来它可能是 API 手册中的代码。或来自您的朋友代码。您需要让我们查看实际导致问题的代码。
我有什么
我在我的 C++/CLI 应用程序中使用 Vimba C API。它已知可以工作,因为我的伙伴已经完成并且运行没有错误。
我已经完成了所有 imports/include。我正在使用 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:我不确定这些标签是否最合适,如果您认为更好,请编辑,谢谢。
对绑定成员函数表达式的非法操作
您似乎正试图回调 class 成员函数。可以做到,但有点棘手。你最好回调一个自由的全局函数,让它工作,然后研究如何回调一个 class 成员函数。
您发布的代码是产生错误的实际代码吗?看起来它可能是 API 手册中的代码。或来自您的朋友代码。您需要让我们查看实际导致问题的代码。