Kinect UnsatisfiedLinkError:SimpleOpenNI.SimpleOpenNIJNI.swig_module_init()V

时间:2012-10-13 17:33:59

标签: c# kinect processing openni

我正在尝试按照Greg Borenstein的“Make 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:\用户\瑞安\文档\加工\库\ SimpleOpenNI \库\ 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(原生方法)at at   SimpleOpenNI.SimpleOpenNIJNI。(SimpleOpenNIJNI.java:1575)at at   SimpleOpenNI.ContextWrapper。(ContextWrapper.java:54)at   SimpleOpenNI.SimpleOpenNI。(SimpleOpenNI.java:212)at   DepthImage.setup(DepthImage.java:41)at   processing.core.PApplet.handleDraw(PApplet.java:2103)at   processing.core.PGraphicsJava2D.requestDraw(PGraphicsJava2D.java:190)     在processing.core.PApplet.run(PApplet.java:2006)at   java.lang.Thread.run(Thread.java:662)

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

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

1 个答案:

答案 0 :(得分:2)

我在WindowsXP上使用了SimpleOpenNI和Processing,它在我的机器上运行正常。 这是我的配置:

  

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

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

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

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

    1. OpenNI 32bit unstable
    2. Nite 32bit unstable
    3. avin2兼容的SensorKinect驱动程序
    4. 按上述顺序。尝试卸载/清理然后重新安装并尝试OpenNI示例。

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

      1. SimpleOpenNI文件夹位于%homepath%\My Documents\Processing\libraries
      2. OpenNI系统变量(OPEN_NI_BIN,OPEN_NI_INCLUDE,OPEN_NI_INSTALL_PATH,OPEN_NI_LIB)在Windows的“环境变量”
      3. 中设置

        您还注意到您宁愿使用Visual Studio而不是Processing。我同意,Processing不是最好的IDE(它的目标是初学者,意味着最小/简单的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。我建议将SimpleViewer.net.exe从obj\x86\Debug文件夹移回obj或更改MainWindow.cs中SAMPLE_XML_FILE的路径

        有点偏离主题:有可能使用bridge library实际使用官方Kinect SDK和OpenNI,但我还没有自己使用过,所以无法根据经验提供建议。

        HTH