質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1354閲覧

VisualStudio C++ linux "undefined reference to pthread_create"

aruzen-weed

総合スコア6

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

GCC

GCCはGNU Compiler Collectionの略です。LinuxのC言語コンパイラのデファクトスタンダードであり、数多くの他言語やプラットフォームサポートもします。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2020/06/17 08:02

編集2020/06/18 07:26

VisualStudio2019 WSL2 g++で
#####std::threadを使ったところ

  • /home/aruru_weed/projects/PipeTest/obj/x64/Release/main.o: in function `main':PipeTest C:\usr\bin\ld 1
  • Id returned 1 exit status
  • undefined reference to 'pthread_create'

の3つのErrorが出ましたイメージ説明


threadを使って
pipeで接続したアプリケーションの標準出力を取得(?)したいです

該当のソースコード

C++

1#include "popen2.h" 2 3#include <iostream> 4#include <pthread.h> 5#include <thread> 6 7int main(int argc, char* argv[]) { 8 int Pipe_r = fileno(stdin); 9 int Pipe_w = fileno(stdout); 10 11 chdir("/mnt/d/linux_bin/"); 12 popen2(Pipe_r, Pipe_w); 13 14 std::string str; 15 16 std::thread th([Pipe_r, &str]() { 17 while (str != "end") 18 { 19 char buf[256] = { NULL }; 20 int size = read(Pipe_r, buf, 255); 21 if (size == -1) { 22 return 1; 23 } 24 if (buf[0] != '\000') { 25 printf("pipe:"); 26 fwrite(buf, 1, size, stdout); 27 printf("\n"); 28 } 29 } 30 }); 31 do { 32 std::cin >> str; 33 write(Pipe_w, str.c_str(), str.length()); 34 write(Pipe_w, "\n", 1); 35 } while (str != "end"); 36 th.join(); 37}

試したこと

"pthread.h"のinclude
プロパティ>C/C++>コマンドライン>追加のオプションに"-pthread"や"-lpthread"を追加
プロパティ>リンカー>入力>追加の依存ファイルにpthreadの追加(Error出ましたw)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/06/17 08:13

エラーメッセージはいらぬ加工しないで、でたそのママをコピペで提示してください
aruzen-weed

2020/06/18 07:26

加工..?とりあえずSS乗っけましたm(_ _)m
guest

回答1

0

ベストアンサー

プロパティ>リンカー>入力>追加の依存ファイルにpthreadの追加(Error出ましたw)

どんなエラーですか?
追加するとすれば libpthread.a もしくは libpthread.so ではなかろーかと。

投稿2020/06/19 08:35

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問