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

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

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

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

Q&A

解決済

3回答

3145閲覧

c言語ゲーム作成に伴うエラー解決

godgodgod2000

総合スコア2

C

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

0グッド

0クリップ

投稿2021/12/07 23:19

編集2021/12/08 13:55

12歳からはじめるゼロからのC言語という書籍を参考に
#include <GConsoleLib.h>
int main() {
gimage("C:\GConsole追加ファイル\sampleimg\chap3-0.png", 0, 0);
return 0;
}

というプログラムを作成したところ

LNK2019 未解決の外部シンボル "void __cdecl gimage(char const *,int,int)" (?gimage@@YAXPEBDHH@Z) が関数 main で参照されました chap3-0 C:\Users\User\source\repos\chap3-0\main.obj 1

LNK1120 1 件の未解決の外部参照 chap3-0 C:\Users\User\source\repos\chap3-0\x64\Debug\chap3-0.exe 1

というエラーがでます。
原因が分かる方はいるでしょうか?

環境はwindowsは11
Visual Studio2022です

書籍だとVisual Studio2019を使用しています

※先ほどはVisual Studio2022ではなくVisual Studio2021と記載していました、申し訳ございません。

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

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

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

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

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

episteme

2021/12/07 23:31 編集

関数gmage()はどこにありますか? ライブラリの中なら当該ライブラリをリンクしてないのでは? あるいは gimage() が定義されたソースをコンパイル/リンクしていないのでは?
episteme

2021/12/08 00:22

> Visual Studio2021です そんなのあったっけ? 2019の次は2022なんだが。
godgodgod2000

2021/12/08 09:35 編集

①マルチポストについては確認不足でした申し訳ございません。  教えていただきありがとうございます。 ②Visual Studioについては2022の間違いです。  教えていただきありがとうございます。 ③gmage()のソースがリンクされていないことについて  確認いたします。  ありがとうございました、
guest

回答3

0

ベストアンサー

ライブラリとヘッダファイルは下記よりダウンロードする必要があるようです。(恐らく書籍に手順が書かれていると思います。)

■ 最新版 12歳からはじめる ゼロからのC言語ゲームプログラミング教室
https://www.rutles.net/products/detail.php?product_id=854

以下のフォルダを C:\ 等に配置して Visual C++ のプロジェクト設定画面からディレクトリ参照すればビルドできるかと思います。

C:\GConsole追加ファイル  GConsoleLib.h  GConsoleLib.lib  GConsoleLib_d.lib

Visual C++ 2022 の場合の注意点として、
デフォルトのビルド構成が「Debug - x64」になっているので「Debug - x86」に変更する必要があるかもしれません。

投稿2021/12/08 03:14

編集2021/12/08 14:12
cx20

総合スコア4633

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

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

cx20

2021/12/08 03:56

ちなみにVC++2019と2022で試してみましたが 「グラフィカルコンソールが見つかりません」 とコンソールに表示され画像表示はされませんでした。。
cx20

2021/12/08 03:59

どうやら、先に GraphicalConsole.exe を立ち上げておく必要があるようでした。画像表示されました。
godgodgod2000

2021/12/08 09:32

ありがとうございます 参考になりました
guest

0

gimageという関数がどこにもない、とおっしゃってます
ビルドするソースが足りないか、ライブラリの指定が足りないか、ですね

投稿2021/12/07 23:59

y_waiwai

総合スコア87774

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

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

godgodgod2000

2021/12/08 09:33

ありがとうございます。 参考にします。
guest

0

ベストアンサーの方の解答のように
今回の原因は
”Visual C++ 2022 の場合の注意点として、
デフォルトのビルド構成が「Debug - x64」になっているので「Debug - x86」に変更する必要があること”です

私のような初心者だと変更にも時間がかかるため(調べるのに苦労しました)
ある程度、経験がある方以外は素直に古い(今回の場合は2019年)のvisual studioをダウンロード
する方が早いと思います。
公式で過去のものも配布しており入手もしやすいです。

今回の書籍以外にも過去のvisal studioを前提とした書籍を買った場合は
過去の書籍が用いている年度のモノを利用するのが
余計な問題が生じなく楽です。

投稿2021/12/08 13:40

godgodgod2000

総合スコア2

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

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

cx20

2021/12/08 14:13 編集

もう1点、気が付いたことがあったので、参考までに投稿しておきます。 公式サイトからダウンロードしたライブラリですが、Visual C++ 2019 の「Release ビルド」でリンクしようとすると以下のようなエラーが出るようです。 > 重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 > エラー C1047 オブジェクトまたはライブラリ ファイル 'C:\GConsole追加ファイル\GConsoleLib.lib' は、'Release\main.obj' などの他のオブジェクトとは異なるバージョンのコンパイラで作成されています。 > 同じコンパイラを使用してすべてのオブジェクトとライブラリをリビルドします その場合は、プロジェクトのプロパティより 「プラットフォームツールセット」を「Visual Studio 2019 (v142)」→「Visual Studio 2015 (v140)」 に変更するとエラーが解消するようでした。 (どうやら、ライブラリが Visual C++ 2015 で作られていることが原因のようです。) 参考情報でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問