
うまく直すことができませんでした。助言をお願いいたします。
Microsoft Visual Studio Professional 2013
Vewsion 12.0.30501.00 Update 2
(C) 2013 Microsoft Corporation.
All rights reserved.
ーーーーーーーー
・Kinect for Windows SDK v2をインストール
新しいプロジェクト→Win32 コンソールアプリケーション→コンソールアプリケーション(空のプロジェクト チェック入れる)
プロジェクトを右クリック→追加→新しい項目→C++ファイル
プロジェクトを右クリック→プロパティ→「構成」を「すべての構成」に変更→「構成プロパティ|C/C++|追加のインクルードファイル」に「$(KINECTSDK20_DIR)\inc」を追加
「構成プロパティ|リンカー|追加のライブラリディレクトリ」に「$(KINECTSDK20_DIR)\lib\x86」を追加
「構成プロパティ|リンカー|追加の依存ファイル」に「Kinect20.lib」
プロジェクトを右クリック→NuGetパッケージの管理…→opencv(Itseez)を追加
ーーーーーーーーー
プログラム
#include <iostream>
#include <sstream>
#include <Kinect.h>
#include <opencv2\opencv.hpp>
#include <atlbase.h>
#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()); \
}
class KinectApp //クラス宣言
{
public:
//以下関数
void initialize()
{
//Kinect SDK//下10行分追加
CComPtr<IKinectSensor>kinect = nullptr;
CComPtr<IColorFrameReader>colorFrameReader = nullptr;
int colorWidth;
int colorHeight;
unsigned int colorBytesPerPixel;
ColorImageFormat colorFormat = ColorImageFormat::ColorImageFormat_Bgra;
//表示部分
std::vector<BYTE>colorBuffer;//上10行分追加
//デフォルトのKinectを取得する
IKinectSensor* Kinect = nullptr;
ERROR_CHECK(::GetDefaultKinectSensor(&Kinect));
ERROR_CHECK(Kinect->Open());
BOOLEAN isOpen = false;
ERROR_CHECK(Kinect->get_IsOpen(&isOpen));
if (!isOpen){
throw std::runtime_error("Kinectが開けません");
//カラーリーダーを取得する
CComPtr<IColorFrameSource>colorFrameSource;
ERROR_CHECK(Kinect->get_ColorFrameSource(&colorFrameSource));
ERROR_CHECK(colorFrameSource->OpenReader(&colorFrameReader));
//カラー画像のサイズを取得する
CComPtr<IFrameDescription>colorFrameDescription;
ERROR_CHECK(colorFrameSource->CreateFrameDescription(ColorImageFormat::ColorImageFormat_Bgra, &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;
}
}
}
//データの更新処理
void update()
{
updateColorFrame();
}
//カラーフレームの更新
void updateColorFrame()
{
//フレームを取得する
CComPtr<IColorFrame>colorFrame;
CComPtr<IColorFrameReader>colorFrameReader = nullptr;//追加
auto ret = colorFrameReader->AcquireLatestFrame(&colorFrame);
if (FAILED(ret)){
return;
}
//BGRAの形式でデータを取得する
std::vector<BYTE>colorBuffer;//追加
ERROR_CHECK(colorFrame->CopyConvertedFrameDataToArray(colorBuffer.size(), &colorBuffer[0], ColorImageFormat_Bgra));
}
void draw()
{
drawColorFrame();
}
//データの表示処理
void drawColorFrame()
{
//カラーデータを表示する
int colorWidth;
int colorHeight;
ColorImageFormat colorFormat = ColorImageFormat::ColorImageFormat_Bgra;
//表示部分
std::vector<BYTE>colorBuffer;//上10行分追加
cv::Mat colorImage(colorHeight, colorWidth, CV_8UC4, &colorBuffer[0]);
cv::imshow("Color Image", colorImage);
}
};
void main()
{
try {
KinectApp app;
app.initialize();
app.run();
}
catch (std::exception& ex) {
std::cout << ex.what() << std::endl;
}
}
ーーーーーーーー
エラー内容
エラー 2 error LNK1120: 1 件の未解決の外部参照 C:\Users\tsuruno\Documents\Visual Studio 2013\Projects\Kinectv2ver2\Debug\Kinectv2ver2.exe 1 1 Kinectv2ver2
エラー 1 error LNK2019: 未解決の外部シンボル _wWinMain@16 が関数 ___tmainCRTStartup で参照されました。 C:\Users\tsuruno\Documents\Visual Studio 2013\Projects\Kinectv2ver2\Kinectv2ver2\MSVCRTD.lib(wcrtexew.obj) Kinectv2ver2
ーーーーーーーー
参考文献は、
主:Kinect for Windows SDK プログラミング v2センサー対応版(中村薫 他 著)
及び
http://www.buildinsider.net/small/kinectv2cpp
です。色々エラーを起こしては直していたのですが、私では解決しきれない問題にぶつかってしまいました。どうにか直せないでしょうか?よろしくお願いします。
No.2ベストアンサー
- 回答日時:
コード上にあるのは
>void main()
なのですから、リンカーがWinMainを要求している時点でなにか間違っています。
# たぶん/SUBSYSTEM:CONSOLEでないとダメかと。
で、文字コードセットの影響もあるかと思われますので、「マルチバイト文字セットを使用する」にした方がいいかと。
「unicode文字セットを使用する」の場合はwmain()ですかね。
https://msdn.microsoft.com/ja-jp/library/6wd819w …
あとは…void main()ではなく上記のURLの通りint main()にする…とか。
# まぁ、現状のWinMain()要求ではダメなんですけど。
遅くなりましたが、ありがとうございました。もう何度か立ち上げたらLINK2019のエラーは出なくなりビルドで正常終了するようになりました。
また、今度は一度目のビルドは成功するのですが、デバック開始後にメモリが破壊される旨のエラーが表示され、その後もう一度ビルドしたところ以下の一文しか表示されず原因よくわかりません。
========== ビルド: 0 正常終了、0 失敗、1 更新不要、0 スキップ ==========
今振り返ってもよくわかりませんが、たぶんwhile文の中にあるのではと疑っています。ソースコード上の何かがおかしいんだということはわかりました。
改めて、ネット上のサンプルコードを軸にしてみたら映像が表示されるようになったのでとりあえず原因究明に努めます。改めてありがとうございました。
またなにかありましたら、よろしくお願いします。
No.1
- 回答日時:
>エラー 1 error LNK2019: 未解決の外部シンボル _wWinMain@16 が関数 ___tmainCRTStartup で参照されました。
WinMain()がねぇよ。
といわれています。
>新しいプロジェクト→Win32 コンソールアプリケーション→コンソールアプリケーション(空のプロジェクト チェック入れる)
ちゃんとコンソール選んでいなかった…という可能性でしょうかね。
もう一度プロジェクトの作成からやり直してみる。というのでどうでしょうかね。
記述したソースコードは「既存のファイル」で取り込めるでしょう。
プロジェクトの設定で、C/C++のプリプロセッサにあるプリプロセッサの定義とリンカーのシステムにあるサブシステムを変更することで切り替えられる…とは思いますけど。
さっそくのお答えありがとうございます。
うーん、以下のurlを参考にリンカーのサブシステムはWindows (/SUBSYSTEM:WINDOWS)とコンソール (/SUBSYSTEM:CONSOLE)を試してみましたが駄目でした。#include <tchar.h>の一文を冒頭に書いてみても変わらずです。
http://nononnno.blog.fc2.com/blog-entry-15.html
ご指摘の通り、立ち上がりの設定の誤りを考慮して、何度か作り直しもしてはいたのですが結果は同じでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- MySQL 何にかが違うから エラーなんでしょうね! 2 2022/09/18 05:28
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- C言語・C++・C# C++初心者です stirng 2 2022/09/20 20:43
- その他(プログラミング・Web制作) python fbprophetについて 1 2022/09/29 19:44
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- サーバー WindowsでApache が起動しない 1 2022/11/29 12:21
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外部依存関係について
-
LNK2019: 外部シンボル どのよ...
-
LNK2001(Pro*c)
-
ilink32について。'__setargv__...
-
MFC C++ と C++/CLI の文字列
-
wsprintfのエラーについて
-
外部シンボル未解決 LNK2001
-
外部シンボルの未解決のエラー
-
『外部シンボル~未解決です。...
-
リンカのエラー
-
Windowsアプリケーションをどう...
-
Visual C++6.0を使っていての質問
-
エラー 未解決の外部シンボル
-
C++ Builderでユニットの追加
-
error LNK2001について
-
C言語のエラー LNK1120: 外部参照
-
C++でのエラー LNK2001
-
ビルドする時のエラー。(初心...
-
コンパイルエラー
-
gdiplusのリンクエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外部依存関係について
-
外部シンボル" ~~"は未解決で...
-
外部シンボルの未解決のエラー
-
LNK2019: 未解決の外部シンボル...
-
LNK2019: 外部シンボル どのよ...
-
IP Helper APIを使うとエラーが...
-
gdiplusのリンクエラー
-
LNK2001(Pro*c)
-
C++STLについての質問です。
-
C++ Builderでユニットの追加
-
エラーの内容教えてください
-
C言語のエラー LNK1120: 外部参照
-
VC++/MFCで error LNK2001
-
エラー 未解決の外部シンボル
-
実行ファイルの容量を減らした...
-
Windowsアプリケーションをどう...
-
クラスを使ったC++の関数を...
-
質問させてください。
-
コンパイルエラー
-
リンカのエラー
おすすめ情報