実現したいこと
リンカーを正確にし、ファイルの実行可能を目指したい。
発生している問題・分からないこと
現在の環境
bash:msys2
$ g++ -v
gcc version 13.2.0 (Rev5, Built by MSYS2 project)
opencv入手方法
pacman -S mingw-w64-x86_64-opencv
コード $ g++ 4-7-1.cpp -o 4-7-1.exe -std=c++11 -I/C:/msys64/mingw64/include/opencv4 \ -LC:/msys64/mingw64/lib -lopencv_core -lopencv_highgui -lopencv_imgcodecs \ -lopencv_videoio -lopencv_video -lopencv_imgproc -lopencv_features2d -lopencv_calib3d \ -lopencv_objdetect -lopencv_ml -lopencv_flann
でコンパイルをしようとしたがlibopencv_videoio-409.dllがリンクできない
しかし、ビルトは成功していて
ビルドを開始しています...
cmd /c chcp 65001>nul && C:\msys64\mingw64\bin\g++.exe -fdiagnostics-color=always -g C:\my_program\opencv_ex\222\sampleprogram\4-7-1.cpp -o C:\my_program\opencv_ex\222\sampleprogram\4-7-1.exe -IC:\msys64\mingw64\include\opencv4 -LC:\msys64\mingw64\lib -std=c++11 -lopencv_core -lopencv_highgui -lopencv_imgcodecs -lopencv_videoio
ビルドが正常に完了しました。
エラーメッセージ
error
1$ ./4-7-1.exe 2C:/my_program/opencv_ex/222/sampleprogram/4-7-1.exe: error while loading shared libraries: ?: cannot open shared object file: No such file or directory 3 4となってはいるが、libopencv_videoio.dllのリンクエラーではないかと推測している
該当のソースコード
C++
1#define _USE_MATH_DEFINES 2#include <iostream> 3#include <cmath> 4#include <opencv2/opencv.hpp> 5using namespace std; 6using namespace cv; 7string win_src = "src"; 8string win_dst = "dst"; 9 10int main() 11{ 12 string file_src = "src.png"; // 入力画像のファイル名 13 string file_dst = "abc.png"; // 出力画像のファイル名 14 // 入力画像(カラー)の読み込み 15 Mat img_src = imread(file_src, IMREAD_COLOR); 16 // 入力画像(グレースケール)の読み込み 17 //Mat img_src = imread(file_src, IMREAD_GRAYSCALE); 18 19 Mat img_dst; 20 if(!img_src.data) { 21 cout << "error" << endl; 22 return -1; 23 }; 24 25 // ウインドウ生成 26 namedWindow(win_src, WINDOW_AUTOSIZE); 27 namedWindow(win_dst, WINDOW_AUTOSIZE); 28 29 // ここに核となる処理を記述する 30 flip(img_src, img_dst, 0); // 垂直反転 31 32 imshow(win_src, img_src); // 入力画像を表示 33 imshow(win_dst, img_dst); // 出力画像を表示 34 imwrite(file_dst, img_dst); // 処理結果の保存 35 36 waitKey(0); // キー入力待ち 37 return 0; 38} 39
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
コード $ ldd ./4-7-1.exe ntdll.dll => /c/Windows/SYSTEM32/ntdll.dll (0x7ffc740d0000) KERNEL32.DLL => /c/Windows/System32/KERNEL32.DLL (0x7ffc72320000) KERNELBASE.dll => /c/Windows/System32/KERNELBASE.dll (0x7ffc71830000) msvcrt.dll => /c/Windows/System32/msvcrt.dll (0x7ffc72160000) libgcc_s_seh-1.dll => /mingw64/bin/libgcc_s_seh-1.dll (0x7ffc41e10000) libopencv_highgui-409.dll => /mingw64/bin/libopencv_highgui-409.dll (0x7ffc036a0000) libopencv_core-409.dll => /mingw64/bin/libopencv_core-409.dll (0x7ffbdf6c0000) libopencv_imgcodecs-409.dll => /mingw64/bin/libopencv_imgcodecs-409.dll (0x7ffbf6ff0000) libstdc++-6.dll => /mingw64/bin/libstdc++-6.dll (0x7ffbe0370000) libwinpthread-1.dll => /mingw64/bin/libwinpthread-1.dll (0x7ffc41020000) OPENGL32.dll => /c/Windows/SYSTEM32/OPENGL32.dll (0x7ffbec7f0000) libwinpthread-1.dll => /mingw64/bin/libwinpthread-1.dll (0x226fd770000) opengl32.dll => /c/Windows/System32/opengl32.dll (0x226fd9d0000) ADVAPI32.dll => /c/Windows/System32/ADVAPI32.dll (0x7ffc72230000) sechost.dll => /c/Windows/System32/sechost.dll (0x7ffc72780000) bcrypt.dll => /c/Windows/System32/bcrypt.dll (0x7ffc71410000) libtbb12.dll => /mingw64/bin/libtbb12.dll (0x7ffbee330000) zlib1.dll => /mingw64/bin/zlib1.dll (0x7ffc36370000) libopenblas.dll => /mingw64/bin/libopenblas.dll (0x7ffbca100000) RPCRT4.dll => /c/Windows/System32/RPCRT4.dll (0x7ffc72030000) USER32.dll => /c/Windows/System32/USER32.dll (0x7ffc73e60000) win32u.dll => /c/Windows/System32/win32u.dll (0x7ffc71440000) libjpeg-8.dll => /mingw64/bin/libjpeg-8.dll (0x7ffbea860000) GDI32.dll => /c/Windows/System32/GDI32.dll (0x7ffc722f0000) gdi32full.dll => /c/Windows/System32/gdi32full.dll (0x7ffc71530000) msvcp_win.dll => /c/Windows/System32/msvcp_win.dll (0x7ffc71be0000) ucrtbase.dll => /c/Windows/System32/ucrtbase.dll (0x7ffc71c80000) combase.dll => /c/Windows/System32/combase.dll (0x7ffc723f0000)
見てみるとlibopencv_videoio-409.dllだけが存在しない
補足
"C:\msys64\mingw64\lib\libopencv_videoio.dll.a"
"C:\msys64\mingw64\bin\libopencv_videoio-409.dll"
は存在している。
あなたの回答
tips
プレビュー