ソルフです。Qiitaのアカウントとか持ってないしこちらの方でお話しします
いろいろあってC++でDlibとOpenCVを動かすことになったのですが、先駆者の方々の記事を参考にしたもののちょいと勝手が違ったようで。たぶんどっかしらのやり方をまずったりしただけなんだろうけど(情弱なみかん)とりあえずエラー吐いたところを載せときます
使用環境:
windows10
Visual Studio2017
Dlib(19.16)
OpenCV(3.4.4)
参考にさせていただいた記事
たぶん大方の人は上記の神記事を参考にしてもらえば大丈夫なはずです。
自分の方で起きた問題は以下の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なんぞ遊ぶときにしか触らん情弱なのでやべーミスやらかしてるかもしれないです、もし「ここまずくね?」ってところあったら教えていただきたいです…。