9

我刚刚下载了 OpenNI 2 SDK ( www.openni.org ),我正在尝试在 Visual Studio 2012 中设置一个项目。我做了什么:

  1. 创建一个新的 C++ Win32 控制台应用程序项目
  2. 转到项目>MyProject 属性,然后在配置属性>VC++ 目录中...
  3. 添加C:\Program Files (x86)\OpenNI2\Redist\;可执行目录
  4. 添加C:\Program Files (x86)\OpenNI2\Include\; 包括目录
  5. 添加C:\Program Files (x86)\OpenNI2\Redist\;参考目录
  6. 添加C:\Program Files (x86)\OpenNI2\Lib\;图书馆目录

但是当我尝试构建时,出现以下未解决的符号错误(其中 ConsoleApplication1 是我的项目名称)

Error   1   error LNK2019: unresolved external symbol
__imp__oniInitialize referenced in function
"public: static enum openni::Status __cdecl openni::OpenNI::initialize(void)"
(?initialize@OpenNI@openni@@SA?AW4Status@2@XZ)
c:\Users\MyPC\documents\visual studio 2012\Projects\ConsoleApplication1\ConsoleApplication1\ConsoleApplication1.obj
ConsoleApplication1

我知道这个链接错误是说链接器找不到一些库,但我认为我刚刚做的就足够了。

我也尝试了64位版本,创建了一个64位项目,但我有同样的错误。

我找不到关于这个主题的令人满意的文档。

我确定我错过了一些愚蠢的东西。您能对此提出一些建议吗?

4

3 回答 3

7

您还应该执行以下步骤:

0-在 C/C++ 部分的“常规”节点下,选择

"Additional Include Directories" 

并添加

"$(OPENNI2_INCLUDE)" (if you use the 32-bit version) or 
"$(OPENNI2_INCLUDE64)" (if you use the 64-bit version). 

这些是指向 OpenNI Include 目录位置的环境变量。(默认值为:

C:\Program Files\OpenNI2\Include or 
C:\Program Files (x86)\OpenNI2\Include)

1-在链接器部分的“常规”节点下,选择

"Additional Library Directories" 

并添加

"$(OPENNI2_LIB)" (if you use the 32-bit version) or 
"$(OPENNI2_LIB64)" (if you use the 64-bit version). 

这些是指向 OpenNI Lib 目录位置的环境变量。(默认值为:

C:\Program Files\OpenNI2\Lib or 
C:\Program Files (x86)\OpenNI2\Lib)

2-在链接器部分的输入节点下,选择

"Additional Dependencies" 

并添加

OpenNI2.lib or OpenNI2.lib

3-确保将 Additional Include 和 Library 目录添加到ReleaseDebug配置中。

4-将 OpenNI 的 redist 目录中的所有文件(请参阅环境变量“$(OPENNI2_REDIST)”或“$(OPENNI2_REDIST64)”)复制到您的工作目录。(默认为

C:\Program Files\OpenNI2\Redist or 
C:\Program Files (x86)\OpenNI2\Redist). 

请注意,从命令行运行时,工作目录是可以找到可执行文件的目录,而从 Visual Studio 运行的默认目录是可以找到项目文件(.vcproj、.vcxproj)的位置。

于 2013-02-25T23:22:24.060 回答
1

您还需要指向实际的库文件:openni2.lib

于 2013-02-08T23:07:51.447 回答
1

If you add all of options (Include, Lib, ...) to your project setting and again get this error, maybe your project platform is Win32 and you want to use OpenNI x64

In this case, you must change the platform to x64 (Project properties at the top of the page)

  • If you don't have x64 option, make a new one ;)
于 2014-07-23T12:43:47.937 回答