1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

C++でOpenCVを使う際のコンパイルエラーの対処法

Last updated at Posted at 2019-01-23

##目的
C++でOpenCVを使う際に、コンパイルしたときエラーが出たので解決した。

環境
-Ubuntu 18.04

##エラー内容
エラーログ取り忘れたので悲しいけど、undefined referenceっていうエラーが出ました。

ここを見てもらうとわかりますが、リンカーが問題らしいです。詳しくはあまりわかりませんが。

コンパイルする際にこのようにするとうまくいきます。

```g++ -o test_1 test_1.cpp pkg-config opencv --cflags --libs


でも直近でopencvを使ったコードをコンパイルするときは実行時間のリンクの問題?があるらしいので、エラー回避のため、`sudo ldconfig`を実行すればよいそうです。

まあここまでは[参考URL](#OpenCV)を見てもらえばいいかなと思います。

##Shell Scriptでまとめた
しかし、いちいち`g++`から始まるコードを打つのは面倒くさいと感じたので、shell scriptを使って楽をしちゃいました。ファイル名はopencv.shという名前にしています。

```shell
#!/bin/bash

PARAM=${1:?}

if [ $# -ne 1 ]; then
        echo "Designated argument is $#." 1>&2
        echo "Need 1 argument to execute." 1>&2
        exit 1
fi

g++ -o $PARAM $PARAM.cpp `pkg-config opencv --cflags --libs`

短いので見た通りなのですが、PARAMで引数を取って、ifの部分は引数に関するエラー処理(もし引数が1つじゃなかった場合の話です)、メインのg++の部分が今回使うコンパイルのコードです。

コードからもわかる通り、$PARAMにはcppが入っちゃいけないので、cpp抜きのファイル名を入れます。

使用例

./opencv.sh test
で、これは
```g++ -o test test.cpp pkg-config opencv --cflags --libs

と同義です。

##参考URL
<a name="OpenCV">
Cannot get OpenCV to compile because of undefined references? 
https://stackoverflow.com/questions/24337932/cannot-get-opencv-to-compile-because-of-undefined-references
</a>
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?