解决方法
我在codeproject上的一些帮助帖子中找到了一些帮助
想在这里发布它可能对其他人有用
#include "stdafx.h" #include "windows.h" using namespace System; using namespace System::Runtime::InteropServices; class Camera { public: Camera() { } ~Camera(){} void (*test)(void); void OnNewCameraData(); void StartDataAcquisition(); }; void Camera::StartDataAcquisition() { int i; while(i<10) { test(); i++; Sleep(1000); } } delegate void FunctionToCallDelegate(); ref class CameraAdapter { private: Camera *_camera; FunctionToCallDelegate ^_Function; public: CameraAdapter(FunctionToCallDelegate ^handler) { _Function = handler; } void Init() { _camera = new Camera(); pin_ptr<FunctionToCallDelegate^> tmp = &_Function; _camera->test = (void (__cdecl *)(void))(Marshal::GetFunctionPointerForDelegate(_Function).ToPointer()); _camera->StartDataAcquisition(); } ~CameraAdapter() { delete _camera; _camera = 0; } void OnNewCameraData() { Console::WriteLine("Received Frame \n"); } }; int main(array<System::String ^> ^args) { FunctionToCallDelegate ^dsi; dsi += gcnew FunctionToCallDelegate(gcnew CameraAdapter(dsi),&CameraAdapter::OnNewCameraData); CameraAdapter ^camera = gcnew CameraAdapter(dsi); camera->Init(); Console::ReadKey(); return 0; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。