人生クソ怯み

ワクワクのもっと先へ物語は続いていくんだ twitter→@solf_poke

VisualStudio2017でDlibとOpenCVつかうのにちょっと苦労した話

ソルフです。Qiitaのアカウントとか持ってないしこちらの方でお話しします

 

いろいろあってC++でDlibとOpenCVを動かすことになったのですが、先駆者の方々の記事を参考にしたもののちょいと勝手が違ったようで。たぶんどっかしらのやり方をまずったりしただけなんだろうけど(情弱なみかん)とりあえずエラー吐いたところを載せときます

 

使用環境:

windows10

Visual Studio2017

Dlib(19.16)

OpenCV(3.4.4)

 

参考にさせていただいた記事

blog.nextscape.net

 

たぶん大方の人は上記の神記事を参考にしてもらえば大丈夫なはずです。

自分の方で起きた問題は以下の3つ。

 

1.source.cpp内のstdafx.hのインクルードが効かない

Dlib内のsource.cppのおいてあるフォルダ内を参照しているからだと思われる。

stdafx.hはそこにはないのでエラーを吐かれる。

パス指定してあげると「stdafx.hインクルードしてなくね?」と怒られる。

そのまんま#include "stdafx.h"の形でいれてあげないとだめっぽい?よくわかりません

たぶんもろもろのファイルをコピペしてあげたりするとどうにかなるんだろうけど「そもそもこれいらんくね?」となったのでプロジェクトのプロパティ→C/C++→プリコンパイル済みヘッダーからプリコンパイル済みヘッダーを使用しない設定にして解決。解決…?

2.セクションの数がオブジェクトファイルの制限を超える

らしい。/bigobjを設定しろと言われる。

調べてみたところこれを設定するデメリットはとくになさそうなのでちゃちゃっと設定。

プロジェクトのプロパティ→C/C++コマンドラインから追加のオプションっていうボックスの中に /bigobj を記述。これでいけるはず

3.なんかの関数の定義がされてない

これだけやってまだエラー吐くのか(絶望)となっていたが案外簡単に直った。

たんにプロジェクトのプロパティ→リンカー→入力で追加の依存ファイルに「opencv_world330d(自分のバージョンは3.4.4なのでopencv_world344).lib」を追加して、「opencv_world330d(自分のバージョンは3.4.4なのでopencv_world344).dll」をプロジェクトのフォルダのDebugフォルダに入れてあげるのみ。自分の設定がDebugの方になってただけでした。Releaseは330.libと330.dllでいくみたい。

 

上の3つをなんとかしたら自分の環境では動くようになりました。バンザーイ!!

そんなに困ってる人いないとは思うけどとりあえず書きました。

PCなんぞ遊ぶときにしか触らん情弱なのでやべーミスやらかしてるかもしれないです、もし「ここまずくね?」ってところあったら教えていただきたいです…。