我一直在尝试让 Flex 4.6 中的工作 (AIR 3) Native Extension 工作一段时间。我的基本项目是让 Flash (Flex) UI 与在后台运行的 C++/CLI DLL Native Extension 一起运行。该 C++ 本机扩展在后台进一步使用另一个 C# DLL。
基本上,这个链的原因是让 C# DLL 运行 Kinect 相机,它将数据传递给运行 OpenCV 的 C++ DLL,后者将数据传递给 Flash UI。
现在,我基本上已经完成了所有设置,Flash 可以通过与 C++ 的本机扩展进行通信,而 C++ 可以通过“#using”它的 DLL 与 C# 进行通信。
但是,当我尝试让 Flash 调用本机扩展 C++ 来调用 C# 时,Flex 桌面应用程序崩溃并出现错误:
Process terminated unexpectedly
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'kinect, Version=1.0.0.0, Culture=nutral, PublicKeyToken=null' or one of its dependencies.
The System cannot find the file specified.
at startCamera(Void* ctx, Void* funcData, Uint32 argc, Void** argv)
Launch command details: "C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6\sdks\4.6.0\bin\adl.exe" -runtime "C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.6\sdks\4.6.0\runtimes\air\win" -profile extendedDesktop -extdir "C:\Users\owner\Adobe Flash Builder 4.6\.metadata\.plugins\com.adobe.flexbuilder.project.ui\ANEFiles\WorkingExtension\win32\" C:\Users\owner\Deskto\FinalWorkingExtension\Flex\bin-debug\WorkingExtension-app.xml C:\Users\owner\Desktop\FinalWOrkingExtension\Flex\bin-debug
据我了解,它找不到 kinect.dll (C# DLL)。我已经尝试将它放在本机扩展的 ANE 文件中,包括它在系统 PATH 中,并使用 C++ 项目中的项目属性链接器链接到它。在这一点上,我有点没有想法。
哦,我已经将错误追溯到 C++ 语句:
kinectClass^ deligate = gcnew kinectClass();
其中 kinectClass 是我在 C# DLL 中创建的 C# 类。
感谢您提供的任何帮助。