OpenNIの動作について

このQ&Aのポイント
  • OpenNIをvisual studio2008で動作させようとしていますが、エラーが出て動作しません。
  • インクルードファイルのリンクがうまくできていない可能性があります。
  • 環境はWindows7 32bitで、OpenNI2を使用しています。
回答を見る
  • ベストアンサー

OpenNIの動作について

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の話ですよね? 原因わかる方、回答お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wr5
  • ベストアンサー率53% (2177/4070)
回答No.1

>1>main.obj : error LNK2001: 外部シンボル "__imp__oniDeviceCreateStream" は未解決です。 で、追加のライブラリファイルは指定していますか? C:\Program Files\OpenNI2\Libの下にあると思われる.libファイルをリンクに追加しないとダメかと思われますが。

negi225
質問者

補足

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

その他の回答 (1)

  • wormhole
  • ベストアンサー率28% (1619/5653)
回答No.2

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

negi225
質問者

補足

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

関連するQ&A

  • HTMLファイルのソースを読み出すプログラム

    HTMLファイルのソースを読み出すプログラムで実行したところ、以下↓のようなエラーが出ました。 readhrml.obj : error LNK2001: 外部シンボル "__imp__InternetReadFile@16" は未解決です readhrml.obj : error LNK2001: 外部シンボル "__imp__InternetCloseHandle@4" は未解決です readhrml.obj : error LNK2001: 外部シンボル "__imp__InternetOpenUrlA@24" は未解決です readhrml.obj : error LNK2001: 外部シンボル "__imp__InternetOpenA@20" は未解決です Debug/readhrml.exe : fatal error LNK1120: 外部参照 4 が未解決です。 一応、参考書と照らし合わせてみたのですが、プログラム自体には誤りがないとは思います。このエラーの原因は何か、そしてプログラムを実行するにはどのようにすればいいのか教えてください。C言語の勉強をしているんですが、C言語の知識はそんなにありませんので、なるべく専門用語などは砕いたような形で表現していただければ幸いです。どうかお願いします。

  • C++でのエラー LNK2001

    C++でプログラミング中ビルドしたところ以下のようなエラーが出ました。解決方法がわかりません。どのようにしたら解決できるのでしょうか? ---------------------------------------------------------------- コンパイル中... sample01.cpp リンク中... sample01.obj : error LNK2001: 外部シンボル "__imp__dispose_library" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__get_copyright_information" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__get_version_information" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__initialize_library" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__close_reader_writer" は未解決です sample01.obj : error LNK2001: 外部シンボル "__imp__get_last_error_types" は未解決です Debug/Sample01.exe : fatal error LNK1120: 外部参照 6 が未解決です。 link.exe の実行エラー

  • Visual C++ 2005 Express EditionでLINK2019エラー

    Visual C++ 2003.netからVisual C++ 2005 Express Editionに移行した際に、以前書いたプログラムがリンクエラーで動かなくなってしまいました。 追加するLibディレクトリが足りないのかと思ったのですが、何が足りないのか見つけることができませんでした。 解決法を教えていただけないでしょうか。 OSはWindows XPです。 よろしくお願いします。 エラーメッセージの内容↓ ------------------------------- error LNK2019: 未解決の外部シンボル __imp__GetWindowPlacement@8 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__DispatchMessageA@4 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__TranslateMessage@4 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__PeekMessageA@20 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__ValidateRect@8 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__ShowWindow@8 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__SetWindowPos@28 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__GetWindowRect@8 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__GetClientRect@8 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__CreateWindowExA@48 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__GetSystemMetrics@4 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__RegisterClassExA@4 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__LoadCursorA@8 が関数 _WinMain@16 で参照されました。 error LNK2019: 未解決の外部シンボル __imp__DefWindowProcA@16 が関数 "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。 error LNK2019: 未解決の外部シンボル __imp__PostQuitMessage@4 が関数 "long __stdcall WindowProc(struct HWND__ *,unsigned int,unsigned int,long)" (?WindowProc@@YGJPAUHWND__@@IIJ@Z) で参照されました。 現在追加されているLibディレクトリ↓ ------------------------------------------- $(VCInstallDir)lib $(VCInstallDir)PlatformSDK\lib $(FrameworkSDKDir)lib $(VSInstallDir) $(VSInstallDir)lib C:\Program Files\Microsoft Platform SDK\Lib C:\Program Files\Microsoft DirectX SDK (April 2007)\Lib\x86

  • DB2付きのC言語がコンパイルできません。

    CはMicrosoftVisualStudio2012 DBはIBM DB2 です。 同じ環境でコンパイル実行できていたのに、 PCがおかしくなったのでフォーマットして入れなおしたらコンパイルができなくなりました。 よろしくおねがいします。 ソースはこちらです。 #include <stdio.h> exec sql include sqlca; void main() { exec sql connect to sample; if(SQLCODE!=0) { printf("SQL CONNECT %d", SQLCODE); } else { exec sql update Test1 set col2 = 'bababa'; if(SQLCODE!=0) printf("SQL UPDATE %d", SQLCODE); } exec sql connect reset; } コンパイルコマンドです db2 connect to sample db2 prep Test11.sqc bindfile db2 bind Test11.bnd cl -Z7 -c -W2 -D_X86_=1 -DWIN32 -I"c:\Program Files\IBM\SQLLIB\include" Test11.c link -debugtype:cv -outTest11.exe %1.obj "c:\Program Files\IBM\SQLLIB\lib\db2api.lib" エラーメッセージです Test11.obj : error LNK2019: 未解決の外部シンボル _sqlaaloc@16 が関数 _main で参照されました。 Test11.obj : error LNK2019: 未解決の外部シンボル _sqlacall@20 が関数 _main で参照されました。 Test11.obj : error LNK2019: 未解決の外部シンボル _sqlasetdata@24 が関数 _main で参照されました。 Test11.obj : error LNK2019: 未解決の外部シンボル _sqlastop@4 が関数 _main で参照されました。 Test11.obj : error LNK2019: 未解決の外部シンボル _sqlastrt@12 が関数 _main で参照されました。 Test11.exe : fatal error LNK1120: 5 件の未解決の外部参照

  • ビルドエラー

    現在wrapi(http://sysnet.ucsd.edu/pawn/wrapi/download.html)を使いサンプルプログラムWrapiTest.cpp をVC++6.0で実行を試みています。しかしコンパイルは通るのですビルドがうまくいきません。 ビルドしようとすると以下のエラーが出力しました。 リンク中... WrapiTest.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) long __cdecl WRAPIGetPacketStats(struct DOT_11_STATS *)" (__imp_?WRAPIGetPacketStats@@YAJPAUDOT_11_STATS@@@Z)" は未解決です WrapiTest.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) long __cdecl WRAPIGetAssociatedAP(unsigned char * const)" (__imp_?WRAPIGetAssociatedAP@@YAJQAE@Z)" は未解決です WrapiTest.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) long __cdecl WRAPIGetRTSThreshold(unsigned long *)" (__imp_?WRAPIGetRTSThreshold@@YAJPAK@Z)" は未解決です WrapiTest.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) long __cdecl WRAPISetSSId(unsigned char *,unsigned long &)" (__imp_?WRAPISetSSId@@YAJPAEAAK@Z)" は未解決です WrapiTest.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) long __cdecl WRAPIGetSSId(unsigned char *)" (__imp_?WRAPIGetSSId@@YAJPAE@Z)" は未解決です WrapiTest.obj : error LNK2001: 外部シンボル ""__declspec(dllimport) long __cdecl WRAPIOpenNdisDevice(unsigned short *)" (__imp_?WRAPIOpenNdisDevice@@YAJPAG@Z)" は未解決です (省略) Debug/WrapiTest.exe : fatal error LNK1120: 外部参照 7 が未解決です。 何が原因なのか教えていただけないでしょうか。 よろしくお願いします。

  • VC++2005EEでビルドできない

    VC++ 2005 ExpressEditionをインストールし、 マイクロソフトのヘルプに書いてある手順通りに 設定を行ったのですがビルド時に以下の エラーメッセージが表示されます。 エラーメッセージの一部 test2.obj : error LNK2019: 未解決の外部シンボル __imp__DispatchMessageW@4 が関数 _wWinMain@16 で参照されました。 test2.obj : error LNK2019: 未解決の外部シンボル __imp__TranslateMessage@4 が関数 _wWinMain@16 で参照されました。 test2.obj : error LNK2019: 未解決の外部シンボル __imp__TranslateAcceleratorW@12 が関数 _wWinMain@16 で参照されました。 test2.obj : error LNK2019: 未解決の外部シンボル __imp__GetMessageW@16 が関数 _wWinMain@16 で参照されました。 このようなエラーが計20発生してしまいます。 ちなみに作成しようとしたプログラムは単に ウインドウを表示するだけのもので、名前はtest2です。 どなたか対処法をご存知の方がいらっしゃいましたら ご教授願います 参照URL:http://www.microsoft.com/japan/msdn/vstudio/express/visualc/usingpsdk/

  • 外部シンボル未解決 LNK2001

    外部シンボル未解決 LNK2001 外部シンボル未解決 LNK2001 今windowsXP32bitからwindowsXP64bitPCでのデバッグを行おうとしています。 開発環境VC++2005です。 しかし、32bitPCでは、エラーなどなかったのですが64bitPCだと次のようなエラーが発生しました。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DP8SP_TCPIP" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlay8Address" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlay8Address" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlay8Client" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlay8Client" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultCapture" は未解決です。 5>MainteDlg.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultCapture" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultPlayback" は未解決です。 5>MainteDlg.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultPlayback" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlayVoiceClient" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlayVoiceClient" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "PIN_CATEGORY_PREVIEW" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_IBasicVideo" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "CLSID_VideoInputDeviceCategory" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "CLSID_SystemDeviceEnum" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_ICreateDevEnum" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_IMediaControl" は未解決です。 とエラーがでています。 一応構成マネージャーの設定は、64x設定しています 何か設定などたりないのでしょうか? よろしくお願いします。

  • 外部シンボル未解決 LNK2001

    外部シンボル未解決 LNK2001 今windowsXP32bitからwindowsXP64bitPCでのデバッグを行おうとしています。 開発環境VC++2005です。 しかし、32bitPCでは、エラーなどなかったのですが64bitPCだと次のようなエラーが発生しました。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DP8SP_TCPIP" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlay8Address" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlay8Address" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlay8Client" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlay8Client" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultCapture" は未解決です。 5>MainteDlg.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultCapture" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultPlayback" は未解決です。 5>MainteDlg.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultPlayback" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlayVoiceClient" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlayVoiceClient" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "PIN_CATEGORY_PREVIEW" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_IBasicVideo" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "CLSID_VideoInputDeviceCategory" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "CLSID_SystemDeviceEnum" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_ICreateDevEnum" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_IMediaControl" は未解決です。 とエラーがでています。 一応構成マネージャーの設定は、64x設定しています 何か設定などたりないのでしょうか? よろしくお願いします。

  • 外部シンボル未解決 LNK2001

    外部シンボル未解決 LNK2001 今windowsXP32bitからwindowsXP64bitPCでのデバッグを行おうとしています。 開発環境VC++2005です。 しかし、32bitPCでは、エラーなどなかったのですが64bitPCだと次のようなエラーが発生しました。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DP8SP_TCPIP" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlay8Address" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlay8Address" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlay8Client" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlay8Client" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultCapture" は未解決です。 5>MainteDlg.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultCapture" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultPlayback" は未解決です。 5>MainteDlg.obj : error LNK2001: 外部シンボル "DSDEVID_DefaultPlayback" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "CLSID_DirectPlayVoiceClient" は未解決です。 5>DirectPlay.obj : error LNK2001: 外部シンボル "IID_IDirectPlayVoiceClient" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "PIN_CATEGORY_PREVIEW" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_IBasicVideo" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "CLSID_VideoInputDeviceCategory" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "CLSID_SystemDeviceEnum" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_ICreateDevEnum" は未解決です。 5>DirectShow.obj : error LNK2001: 外部シンボル "IID_IMediaControl" は未解決です。 とエラーがでています。 一応構成マネージャーの設定は、64x設定しています 何か設定などたりないのでしょうか? よろしくお願いします。

  • C言語についてです。

    プログラムを実行しようとすると、 main.obj : error LNK2001: 外部シンボル ""void __cdecl DrawGameOver(void)" (?DrawGameOver@@YAXXZ)" は未解決です。 fatal error LNK1120: 外部参照 1 が未解決です。 とでてしまいます。 どうすれば解決するのでしょうか? 初心者なのでなるべく分かりやすくお願いします。

専門家に質問してみよう