###前提・実現したいこと
現在KinectV2を用いたプロジェクションマッピングを開発しようと思っています。
開発環境VisualStudio2017でサンプルを開いた際LNK2019が出てしまいました。
ほかのサイトを見て確認してみたのですがリンカー等に異常は見られませんでした。
OpenCVはNuGetパッケージをもちいて2.4.1をインストールしています。
###発生している問題・エラーメッセージ
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー LNK2019 未解決の外部シンボル "public: __cdecl cv::Exception::Exception(int,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int)" (??0Exception@cv@@QEAA@HAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@00H@Z) が関数 "public: __cdecl cv::Mat::Mat(int,int,int,void *,unsigned __int64)" (??0Mat@cv@@QEAA@HHHPEAX_K@Z) で参照されました。 Kinect開発 C:\Users\kanazawa\Desktop\卒業研究\Kinect開発\Kinect開発\Main.obj 1 警告 C4267 '引数': 'size_t' から 'UINT' に変換しました。データが失われているかもしれません。 Kinect開発 c:\users\kanazawa\desktop\卒業研究\kinect開発\kinect開発\main.cpp 115 エラー LNK2019 未解決の外部シンボル "public: virtual __cdecl cv::Exception::~Exception(void)" (??1Exception@cv@@UEAA@XZ) が関数 "public: __cdecl cv::Mat::Mat(int,int,int,void *,unsigned __int64)" (??0Mat@cv@@QEAA@HHHPEAX_K@Z) で参照されました。 Kinect開発 C:\Users\kanazawa\Desktop\卒業研究\Kinect開発\Kinect開発\Main.obj 1 エラー LNK2019 未解決の外部シンボル "void __cdecl cv::error(class cv::Exception const &)" (?error@cv@@YAXAEBVException@1@@Z) が関数 "public: __cdecl cv::Mat::Mat(int,int,int,void *,unsigned __int64)" (??0Mat@cv@@QEAA@HHHPEAX_K@Z) で参照されました。 Kinect開発 C:\Users\kanazawa\Desktop\卒業研究\Kinect開発\Kinect開発\Main.obj 1 エラー LNK2019 未解決の外部シンボル "void __cdecl cv::fastFree(void *)" (?fastFree@cv@@YAXPEAX@Z) が関数 "public: __cdecl cv::Mat::~Mat(void)" (??1Mat@cv@@QEAA@XZ) で参照されました。 Kinect開発 C:\Users\kanazawa\Desktop\卒業研究\Kinect開発\Kinect開発\Main.obj 1 エラー LNK2019 未解決の外部シンボル "public: __cdecl cv::_InputArray::_InputArray(class cv::Mat const &)" (??0_InputArray@cv@@QEAA@AEBVMat@1@@Z) が関数 "private: void __cdecl KinectApp::drawColorFrame(void)" (?drawColorFrame@KinectApp@@AEAAXXZ) で参照されました。 Kinect開発 C:\Users\kanazawa\Desktop\卒業研究\Kinect開発\Kinect開発\Main.obj 1 エラー LNK2019 未解決の外部シンボル "public: __cdecl cv::_OutputArray::_OutputArray(class cv::Mat &)" (??0_OutputArray@cv@@QEAA@AEAVMat@1@@Z) が関数 "private: void __cdecl KinectApp::drawColorFrame(void)" (?drawColorFrame@KinectApp@@AEAAXXZ) で参照されました。 Kinect開発 C:\Users\kanazawa\Desktop\卒業研究\Kinect開発\Kinect開発\Main.obj 1 エラー LNK2019 未解決の外部シンボル "public: void __cdecl cv::Mat::deallocate(void)" (?deallocate@Mat@cv@@QEAAXXZ) が関数 "public: void __cdecl cv::Mat::release(void)" (?release@Mat@cv@@QEAAXXZ) で参照されました。 Kinect開発 C:\Users\kanazawa\Desktop\卒業研究\Kinect開発\Kinect開発\Main.obj 1 エラー LNK2019 未解決の外部シンボル "int __cdecl cv::_interlockedExchangeAdd(int *,int)" (?_interlockedExchangeAdd@cv@@YAHPEAHH@Z) が関数 "public: void __cdecl cv::Mat::release(void)" (?release@Mat@cv@@QEAAXXZ) で参照されました。 Kinect開発 C:\Users\kanazawa\Desktop\卒業研究\Kinect開発\Kinect開発\Main.obj 1 エラー LNK2019 未解決の外部シンボル "void __cdecl cv::resize(class cv::_InputArray const &,class cv::_OutputArray const &,class cv::Size_<int>,double,double,int)" (?resize@cv@@YAXAEBV_InputArray@1@AEBV_OutputArray@1@V?$Size_@H@1@NNH@Z) が関数 "private: void __cdecl KinectApp::drawColorFrame(void)" (?drawColorFrame@KinectApp@@AEAAXXZ) で参照されました。 Kinect開発 C:\Users\kanazawa\Desktop\卒業研究\Kinect開発\Kinect開発\Main.obj 1 エラー LNK2019 未解決の外部シンボル "int __cdecl cv::waitKey(int)" (?waitKey@cv@@YAHH@Z) が関数 "public: void __cdecl KinectApp::run(void)" (?run@KinectApp@@QEAAXXZ) で参照されました。 Kinect開発 C:\Users\kanazawa\Desktop\卒業研究\Kinect開発\Kinect開発\Main.obj 1 エラー LNK2019 未解決の外部シンボル "void __cdecl cv::imshow(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class cv::_InputArray const &)" (?imshow@cv@@YAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEBV_InputArray@1@@Z) が関数 "private: void __cdecl KinectApp::drawColorFrame(void)" (?drawColorFrame@KinectApp@@AEAAXXZ) で参照されました。 Kinect開発 C:\Users\kanazawa\Desktop\卒業研究\Kinect開発\Kinect開発\Main.obj 1 エラー LNK1120 11 件の未解決の外部参照 Kinect開発 C:\Users\kanazawa\Desktop\卒業研究\Kinect開発\x64\Debug\Kinect開発.exe 1
###該当のソースコード
#include <iostream> #include <sstream> #include <map> #include <Kinect.h> #include <opencv2/opencv.hpp> #include <atlbase.h> // 次のように使います // ERROR_CHECK( ::GetDefaultKinectSensor( &kinect ) ); // 書籍での解説のためにマクロにしています。実際には展開した形で使うことを検討してください。 #define ERROR_CHECK( ret ) \ if ( (ret) != S_OK ) { \ std::stringstream ss; \ ss << "failed " #ret " " << std::hex << ret << std::endl; \ throw std::runtime_error( ss.str().c_str() ); \ } using namespace cv; class KinectApp { private: // Kinect SDK CComPtr<IKinectSensor> kinect = nullptr; CComPtr<IColorFrameReader> colorFrameReader = nullptr; int colorWidth; int colorHeight; unsigned int colorBytesPerPixel; ColorImageFormat colorFormat = ColorImageFormat::ColorImageFormat_Bgra; // 表示部分 std::vector<BYTE> colorBuffer; public: ~KinectApp() { // Kinectの動作を終了する if (kinect != nullptr) { kinect->Close(); } } // 初期化 void initialize() { // デフォルトのKinectを取得する ERROR_CHECK(::GetDefaultKinectSensor(&kinect)); ERROR_CHECK(kinect->Open()); // カラーリーダーを取得する CComPtr<IColorFrameSource> colorFrameSource; ERROR_CHECK(kinect->get_ColorFrameSource(&colorFrameSource)); ERROR_CHECK(colorFrameSource->OpenReader(&colorFrameReader)); // デフォルトのカラー画像のサイズを取得する CComPtr<IFrameDescription> defaultColorFrameDescription; ERROR_CHECK(colorFrameSource->get_FrameDescription(&defaultColorFrameDescription)); ERROR_CHECK(defaultColorFrameDescription->get_Width(&colorWidth)); ERROR_CHECK(defaultColorFrameDescription->get_Height(&colorHeight)); ERROR_CHECK(defaultColorFrameDescription->get_BytesPerPixel(&colorBytesPerPixel)); std::cout << "default : " << colorWidth << ", " << colorHeight << ", " << colorBytesPerPixel << std::endl; // カラー画像のサイズを取得する CComPtr<IFrameDescription> colorFrameDescription; ERROR_CHECK(colorFrameSource->CreateFrameDescription( colorFormat, &colorFrameDescription)); ERROR_CHECK(colorFrameDescription->get_Width(&colorWidth)); ERROR_CHECK(colorFrameDescription->get_Height(&colorHeight)); ERROR_CHECK(colorFrameDescription->get_BytesPerPixel(&colorBytesPerPixel)); std::cout << "create : " << colorWidth << ", " << colorHeight << ", " << colorBytesPerPixel << std::endl; // バッファーを作成する colorBuffer.resize(colorWidth * colorHeight * colorBytesPerPixel); } void run() { while (1) { update(); draw(); auto key = cv::waitKey(10); if (key == 'q') { break; } } } private: // データの更新処理 void update() { updateColorFrame(); } // カラーフレームの更新 void updateColorFrame() { // フレームを取得する CComPtr<IColorFrame> colorFrame; auto ret = colorFrameReader->AcquireLatestFrame(&colorFrame); if (FAILED(ret)) { return; } // 指定の形式でデータを取得する ERROR_CHECK(colorFrame->CopyConvertedFrameDataToArray( colorBuffer.size(), &colorBuffer[0], colorFormat)); } // データの表示処理 void draw() { drawColorFrame(); } // カラーデータの表示処理 void drawColorFrame() { #if 0 // カラーデータを表示する cv::Mat colorImage(colorHeight, colorWidth, CV_8UC4, &colorBuffer[0]); cv::imshow("Color Image", colorImage); #else cv::Mat colorImage(colorHeight, colorWidth, CV_8UC4, &colorBuffer[0]); cv::Mat harfImage; cv::resize(colorImage, harfImage, cv::Size(), 0.5, 0.5); cv::imshow("Harf Image", harfImage); #endif } }; void main() { try { KinectApp app; app.initialize(); app.run(); } catch (std::exception& ex) { std::cout << ex.what() << std::endl; } }
###試したこと
https://oshiete.goo.ne.jp/qa/9310033.html
https://teratail.com/questions/45146
以上のサイトを参考にし確認
###補足情報(言語/FW/ツール等のバージョンなど)
KinectSDKv2.0_1409
VisualStudio2017C++

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/16 12:05