電子書籍の厳選無料作品が豊富!

OpenNIをvisual studio2008で動作させようとしています。
そこで以下のメッセージが出て動作しません。インクルードファイルのリンクはしたつもりなのですが、参照できていないのでしょうか。

1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceCreateStream" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniFrameRelease" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceIsPropertySupported" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniStreamGetSensorInfo" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceClose" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniShutdown" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniGetExtendedError" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniWaitForAnyStream" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniInitialize" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniStreamStart" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceGetInfo" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniStreamIsPropertySupported" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceOpen" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceGetSensorInfo" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniStreamDestroy" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniStreamStop" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniStreamReadFrame" は未解決です。
1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceIsCommandSupported" は未解決です。
1>C:\Users\sakata\Documents\Visual Studio 2008\Projects\openNI_test\Release\openNI_test.exe : fatal error LNK1120: 外部参照 18 が未解決です。

以上です。
追加のインクルードディレクトリには
C:\Program Files\OpenNI2\Include\Win32
C:\Program Files\OpenNI2\Include
追加のライブラリディレクトリには
"C:\Program Files\OpenNI2\Lib"
を追加しました。

環境変数はOpenNIをインストールしたときに勝手に追加されたので間違っていないと思います。


環境は以下です。
OS:Windows7 32bit
OpenNIはOpenNI2を入れています。(2013年6月現在で最新?)
もちろん32bit版です。
動作カメラはXtionです。ドライバインストール済みで、サンプルプログラムの.exeファイルでの動作は確認しています。

他の質問でx64でビルドすれば通るなどと書いてありますが、それは64bit版OSの話ですよね?


原因わかる方、回答お願いします。

A 回答 (2件)

>1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceCreateStream" は未解決です。



で、追加のライブラリファイルは指定していますか?
C:\Program Files\OpenNI2\Libの下にあると思われる.libファイルをリンクに追加しないとダメかと思われますが。

この回答への補足

追加のライブラリファイルを指定したところ解決しました!
opencvでも同じことをしたはずなのにすっかり忘れていました。

回答ありがとうございました!

補足日時:2013/06/18 19:49
    • good
    • 0

>そこで以下のメッセージが出て動作しません。

インクルードファイルのリンクはしたつもりなのですが、参照できていないのでしょうか。

「インクルードファイルのリンクはしたつもりなのですが、」と書かれていますが、インクルードファイルはリンクするものじゃありません(正直質問を見たときインクルードファイルをシンボリックリンクかハードリンクでもしたのかと思いました)。
よくある勘違いの「ライブラリをリンクしたつもり」なのでしょうが、インクルードファイルをインクルードしてもライブラリは勝手にリンクされたりしません。
追加のライブラリディレクトリはライブラリを探すディレクトリを指定してるだけで勝手にそこから必要そうなライブラリを探し出しリンクする事もしません。

この回答への補足

なるほど!追加の依存ファイルとしてlibファイルを追加しなければならなかったんですね。
C:\Program Files\OpenNI2\Lib\OpenNI2.libを追加の依存ファイルに追加したところコンパイルが通りました!

補足日時:2013/06/18 19:48
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!