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

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

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

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

Q&A

解決済

1回答

238閲覧

Microsoft Visual Studio2022でのエラーの解決方法とビルドエラーについて

ohuson

総合スコア1

C++

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

0グッド

0クリップ

投稿2025/01/18 12:31

編集2025/01/18 12:36

次の5つのファイルから構成されているルーレットの簡易的なゲームを作りたいのですが、gnuplot_i.cの24行目(▲▲で囲われた部分)の「NULLポインター'handle'を逆参照しています」というエラーが一向に解決できません。
また、デバッカーを実行すると、指定されたファイルが見つかりませんと表示され、ビルドエラーになってしまいます。プログラムがよく分からないので丁寧にご教授お願い致します。

ファイルは追加コメントに貼っておきます

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

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

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

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

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

ohuson

2025/01/18 12:34

投稿時に変な風に区切られてしまったのでここにgnuplot_i.cのコードを貼っておきます。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<time.h> #include <stdarg.h> #include"gnuplot_i.h" #include"teigi.h" #ifdef _WIN32 #include <windows.h> #define popen _popen #define pclose _pclose #endif //gnuplot_ctrl構造体を実装する struct gnuplot_ctrl { FILE* gnuplotPipe; }; //Gnuplotを初期化するための関数 gnuplot_ctrl* gnuplot_init() { gnuplot_ctrl *handle = malloc(sizeof(gnuplot_ctrl)); ▲ handle->gnuplotPipe = _popen("gnuplot -persistent", "w"); ▲ return handle; } //Gnuplotを閉じるための関数 void gnuplot_close(gnuplot_ctrl* handle) { if (handle) { pclose(handle->gnuplotPipe); free(handle); } } //Gnuplotコマンドを送信するための関数 void gnuplot_cmd(gnuplot_ctrl* handle, const char* command, ...) { va_list ap; va_start(ap, command); vfprintf(handle->gnuplotPipe, command, ap); fprintf(handle->gnuplotPipe, "\n"); fflush(handle->gnuplotPipe); va_end(ap); } //ルーレットを回すムービーを表示するための関数 void plotroulmovie(int result) { gnuplot_ctrl* h = gnuplot_init(); if (!h) return; gnuplot_cmd(h, "set xrange [0:36]"); gnuplot_cmd(h, "set yrange [0:1]"); gnuplot_cmd(h, "set title 'Roul Spin'"); char command[128]; sprintf_s(command, sizeof(command), "plot '-' using 1:2 with points pt 7 title 'Result: %d'", result); gnuplot_cmd(h, command); gnuplot_cmd(h, "%d %d", result, 1); gnuplot_cmd(h, "e"); gnuplot_close(h); }
guest

回答1

0

ベストアンサー

Windows 11、Visual Studio 2022で確認しました。

closeの時と同じようにhandleの非NULL判定をすると、その警告は消えます。

if (handle) { handle->gnuplotPipe = _popen("gnuplot -persistent", "w"); }

参考

「指定されたファイルが見つかりません」は、具体的にどのファイルでしょうか?
パスが通っているかどうかを確認してください。
また、デバッグ実行した際のカレントは、Debugフォルダーではなく、プロジェクトフォルダーであることに注意してください。

ビルドエラーということは、ソースファイルでしょうか? その辺りの情報を提示すると、回答が得られる確率が高まります。

投稿2025/01/18 20:19

編集2025/01/18 20:36
hiroki-o

総合スコア1219

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

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

ohuson

2025/01/19 08:27 編集

ご回答ありがとうございます。 回答を参考にこのような感じで直してみましたが、同じエラーコードのままでした。 仕様変更してもう少し簡単になるようにしたのでこの質問はもう大丈夫だと思います。せっかく教えてくださったのにすいません。 指定されたファイルが見つかりませんの件は、そのファイルが出来るはずの場所にGame.exe(フォルダだけど…)を作ると、「アクセスが拒否されました。」となってしまいます。プロパティなどをいじっても解決できませんでした。
hiroki-o

2025/01/19 08:24

同じエラーとは、 handle->gnuplotPipe = _popen("gnuplot -persistent", "w"); の行で、「C6011 NULL ポインター 'handle' を逆参照しています。」が出ているということですか? それとも、違う行ですか? 修正後、こちらでは再現しませんでした。 実行ファイルを呼び出すところで、フォルダーを呼び出したらエラーになると思います。 Game.exeの呼び出し方や、呼び出しているソースとGame.exeの位置関係が不明なので、何とも言えません。 質問を編集して、もっと具体的な情報(ソース等)を提示すると、詳しい人に見てもらえる確率が高まります。
ohuson

2025/01/19 08:30

返信ありがとうございます。 自分のパソコンの設定がおかしいかもしれないので一旦自分で頑張ってみます。 ありがとうございました。(__)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.34%

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

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

質問する

関連した質問