在AIR Native Extension中包含外部DLL

时间:2012-06-21 03:26:04

标签: c# c++ flex air flash-builder

我一直在努力让Flex 4.6中的工作(AIR 3)Native Extension工作一段时间。我的基本项目是使用在后台运行的C ++ / CLI DLL Native Extension运行Flash(Flex)UI。 C ++ Native Extension在后台进一步使用另一个C#DLL。

基本上,这个链的原因是让C#DLL运行Kinect摄像头,它会将数据传递给运行OpenCV的C ++ DLL,后者会将数据传递给Flash UI。

现在,我基本上已经完成了所有设置,Flash可以通过Native扩展到C ++进行通信,C ++可以通过“#using”它的DLL与C#进行通信。

但是,当我尝试让Flash调用Native Extension 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)。我已经尝试将它放在Native Extension的ANE文件中,包括它在系统PATH中,并使用C ++项目中的项目属性链接器链接到它。我现在有点想法了。

哦,我已将错误追溯到C ++语句:

kinectClass^ deligate = gcnew kinectClass();

其中kinectClass是我在C#DLL中创建的C#类。

感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以查看以下答案:https://stackoverflow.com/a/15264535/88231

为了进行调试,我将我的DLL复制到了ADL.exe所在的位置并且工作正常。