首页 文章

Kinect UnsatisfiedLinkError:SimpleOpenNI.SimpleOpenNIJNI.swig_module_init()V

提问于
浏览
1

我试图按照Greg Borenstein的"Making Things See"中的步骤进行操作 . http://www.amazon.co.uk/Making-Things-See-Processing-MakerBot/dp/1449307078

虽然我之前使用过Kinect,但我使用Windows SDK并没有使用它建议的OpenNI库 . 所以我按照建议卸载了SDK和设备驱动程序 . 但是我很难让OpenNI使用这些示例 . 在尝试运行Processing(http://www.processing.org/download/)中的c#示例时,我收到此错误:

UnsatisfiedLinkError:SimpleOpenNI.SimpleOpenNIJNI.swig_module_init()V

哪个有这个信息:

无法加载SimpleOpenNI库(SimpleOpenNI32):java.lang.UnsatisfiedLinkError:C:\ Users \ Ryan \ Documents \ Processing \ libraries \ SimpleOpenNI \ library \ SimpleOpenNI32.dll:找不到依赖库验证是否正确安装了SimpleOpenNI . http://code.google.com/p/simple-openni/wiki/Installation线程“动画线程”中的异常java.lang.UnsatisfiedLinkError:SimpleOpenNI.SimpleOpenNIJNI.swig_module_init()V at SimpleOpenNI.SimpleOpenNIJNI.swig_module_init(本机方法)在SimpleOpenNI.SimpleOpenNIJNI . (SimpleOpenNIJNI.java:1575)SimpleOpenNI.ContextWrapper . (ContextWrapper.java:54)在SimpleOpenNI.SimpleOpenNI . (SimpleOpenNI.java:212)处于DepthImage.setup(DepthImage.java:41)处理 . core.PApplet.handleDraw(PApplet.java:2103)在processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:190)处于java.lang.Thread.run的processing.core.PApplet.run(PApplet.java:2006) (Thread.java:662)

我已经搜索了几次互联网,我还没有找到解决这个问题的方法 . 我已经看到它建议我只需要在这里重新启动Windows:http://code.google.com/p/simple-openni/issues/detail?id=27虽然尝试了两次我仍然有错误 .

注意:我宁愿使用Windows Visual Studio而不是Processing,但我不确定如何导入库,或者我应该只引用它 . 我习惯于编码和开发,但不是那么多使用这样的库 .

1 回答

  • 2

    我在WindowsXP上使用了SimpleOpenNI和Processing,它在我的机器上工作正常 . 这是我的配置:

    WinXP SP3,OpenNI开发32位(OpenNI1.5.4.0,Nite1.5.2.21,avin2 SensorKinect5.1.2.1)和处理1.5.1,SimpleOpenNI 0.20(也用0.27测试)

    AFAIK SimpleOpenNI使用JNI与OpenNI库和驱动程序进行通信,因此上述错误可能来自两个地方:

    • OpenNI未正确安装

    • 未正确安装SimpleOpenNI库

    检查OpenNI是否安装正确的最简单方法是运行随附的样本,如 NiViewer (应该在 C:\Program Files\OpenNI\Samples\Bin\Debug 中) . 如果这不是一个很好的迹象表明OpenNI安装有问题 .

    我注意到SimpleOpenNI项目页面上有Sensor Driver / OpenNI / Nite安装程序,但我不记得在我的机器上使用它们了 . 我已手动安装:

    • OpenNI 32bit不稳定

    • Nite 32bit不稳定

    • avin2兼容的SensorKinect驱动程序

    按上述顺序 . 尝试卸载/清理然后重新安装并尝试OpenNI示例 .

    如果正确安装了OpenNI / Nite / SensorKinect并且您可以运行示例,那么Java / JNI端就会出现问题 . 检查以下内容:

    • SimpleOpenNI文件夹位于 %homepath%\My Documents\Processing\libraries

    • OpenNI系统变量( OPEN_NI_BIN,OPEN_NI_INCLUDE,OPEN_NI_INSTALL_PATH,OPEN_NI_LIB )在Windows的环境变量中设置

    你've also noted that you' d宁可使用Visual Studio而不是Processing . 我同意,Processing isn 't the best of IDEs (it'瞄准初学者并且意味着最小/简单的AFAIK) . 如果您想在更好的环境中继续使用Make Things See中的确切代码,我建议使用eclipseProclipsing plugin . Eclipse是一个不错的IDE(自动完成/重构/等),而Proclipsing可以轻松管理Processing项目(包括使用SimpleOpenNI等外部库的项目) .

    想到的另一件事是使用OpenFrameworks with VisualStudioofxOpenNI插件 . OpenFrameworks有点类似于Processing,而ofxOpenNI包装器有一些不错的功能,但您可能需要将Processing / SimpleOpenNI语法移植到oF / ofxOpenNI .

    就我个人而言,我认为SimpleOpenNI非常容易入手(我见过的最好的OpenNI包装器),如果你刚刚开始使用Kinect开发,并且想要轻松地遵循Making Things See示例,那么坚持处理可能会更简单(有或没有eclipse)和SimpleOpenNI . 要看你如何解决这个问题:只是按原样使用示例代码或者需要额外的努力来移植它,但更多地了解OpenNI本身的工作原理(没有包装器/'训练轮')会更简单 .

    我们的想法是以最舒适的方式开始 . SimpleOpenNI确实使事情变得简单,但如果您不习惯Processing / Java并且是经验丰富的开发人员,您可以使用文档了解如何在C#中使用原始的OpenNI API .

    您可以注意到,OpenNI附带了C#样本 . 例如 C:\Program Files\OpenNI\Samples\SimpleViewer.net . 我建议将 obj\x86\Debug 文件夹中的SimpleViewer.net.exe移回 obj 或更改MainWindow.cs中 SAMPLE_XML_FILE 的路径

    有点偏离主题:有可能使用bridge library实际使用官方Kinect SDK和OpenNI,但我没有根据经验提供建议 .

    HTH

相关问题