前提・実現したいこと
画像処理の勉強をしており、マルチスレッドを使って複数の動作を同時に行いたいと考えております。
すでに動作確認済みの二つのプログラムをマルチスレッドで行ったところ以下2点のエラーが出ました。
素人判断ですが、関数たちはもともと動いていたため悪さをしていないと思い簡素なコードを載せております。判断に必要なデータがありましたら教えてください。
発生している問題・エラーメッセージ
error C2893: 関数テンプレート 'unknown-type std::invoke(_Callable &&,_Types &&...) noexcept(<expr>)' の特定に失敗しました error C2672: 'std::invoke': 一致するオーバーロードされた関数が見つかりませんでした。
該当のソースコード
C++
1 2#include <librealsense2/rs.hpp> // Include RealSense Cross Platform API 3#include <opencv2/opencv.hpp> 4#include <fstream> 5#include <iostream> 6#include <sstream> 7#include <iomanip> 8#include <thread> 9 10int ThradProcess1(int argc, char* argv[]) try { 11 12 画像を表示するプログラム。 13 14 } 15 16 return EXIT_SUCCESS; 17} 18catch (const rs2::error& e) 19{ 20 std::cerr << "RealSense error calling " << e.get_failed_function() << "(" << e.get_failed_args() << "):\n " << e.what() << std::endl; 21 return EXIT_FAILURE; 22} 23catch (const std::exception& e) 24{ 25 std::cerr << e.what() << std::endl; 26 return EXIT_FAILURE; 27} 28 29void save_frame_depth_data(const std::string& filename, 30 rs2::frame frame, 31 float depth_units) 32{ 33 csvファイルに画像の距離情報を書きこむプログラム 34} 35 36 37int ThradProcess2(int argc, char* argv[]) try 38{ 39 ・ 40 ・ 41 ・ 42 while (true) 43 { 44 . 45 . 46 . 47 //csvファイルに画像の距離情報を書きこむ関数の呼び出し 48 save_frame_depth_data("depth", depth, depth_units); 49 50 } 51 52 return EXIT_SUCCESS; 53} 54catch (const rs2::error& e) 55{ 56 std::cerr << "RealSense error calling " << e.get_failed_function() << "(" << e.get_failed_args() << "):\n " << e.what() << std::endl; 57 return EXIT_FAILURE; 58} 59catch (const std::exception& e) 60{ 61 std::cerr << e.what() << std::endl; 62 return EXIT_FAILURE; 63} 64 65int main() { 66 std::thread th1(ThradProcess1); 67 std::thread th2(ThradProcess2); 68 69 th1.join(); 70 th2.join(); 71} 72
補足情報(FW/ツールのバージョンなど)
- OS:Windows10
- IDE:Microsoft Visual Studio Community 2019
- 開発言語:C++
当方、プログラム並びにTeratail質問初心者なため
基本的な間違いや失礼がありましたらそちらもご教授いただけると幸いです。
回答1件
あなたの回答
tips
プレビュー