【C++】エラー「cv::String::deallocate()’ に対する定義されていない参照」を解決する【include】

スポンサーリンク

【C++】エラー「cv::String::deallocate()’ に対する定義されていない参照」を解決する【include】

C++で画像表示したかったのでopencvを使おうとしたのだけど、最初にopencvをインクルードするところでエラーが出て詰まってしまった

# include <opencv2/opencv.hpp>

↑を入れてコンパイルすると、以下のエラーが出てきた。

/tmp/ccqB7jqo.o: 関数 `cv::String::~String()' 内:
cv.cpp:(.text._ZN2cv6StringD2Ev[_ZN2cv6StringD5Ev]+0x14): `cv::String::deallocate()' に対する定義されていない参照です
/tmp/ccqB7jqo.o: 関数 `cv::String::operator=(cv::String const&)' 内:
cv.cpp:(.text._ZN2cv6StringaSERKS0_[_ZN2cv6StringaSERKS0_]+0x28): `cv::String::deallocate()' に対する定義されていない参照です
collect2: error: ld returned 1 exit status

【解決方法】-lopencv_coreを付けてコンパイルする

原因としてはopencvのパスなどのリンクが上手くできていないことが考えられる。

色々調べた結果以下のようなオプションを付けることでエラーが解決したというコメントを見つけた。

-lopencv_videoio -lopencv_imgcodecs -lopencv_core -lopencv_imgproc -lopencv_features2d -lopencv_flann -lopencv_video -lopencv_calib3d -lopencv_highgui
undefined reference to 'cv::String::allocate(unsigned long)' · Issue #8 · chili-epfl/qml-cvcamera
cvcamera.o: In function cv::String::String(char const*)': /usr/local/include/opencv2/core/cvstd.hpp:602: undefined reference to cv::String::allocate(unsigned lo...

↓のオプション(-lopencv_core)をつければエラーが出なくなった。

-lopencv_core

コンパイル時のコマンドは以下のようにする。

g++ [file_name] -lopencv_core

[file_name]はコンパイルしたいファイル名にする。

人気記事

人気記事はこちら。

CUDA、cuDNNのバージョンをターミナルで調べるコマンド
【Pytorch】テンソルの次元を追加・削除する方法【dim】
【Pytorch】テンソルを連結する方法(cat・stack)
【Protobuf】"TypeError: Descriptors cannot not be created directly."を解決する【solved】
【Python】Tensorflowをダウングレード・アップグレードするコマンド
タイトルとURLをコピーしました