コンパイル エラー。 コンパイラエラー C2065

コンパイラエラー C2065

コンパイル エラー

まえおき C 布教活動しているなかで、初心者ごろしなのがコンパイルエラーな気がしてきたので 、トラブルシューティング的なものを書いてみたい。 結果、思ってたのと違う記事が出来上がった。 というわけで、読み物としてお楽しみください。 やってること わざとコンパイルエラーを通らないコードを書いてコンパイルエラーを潰していく様を書いてみる。 結局のところ 場当たり的にコンパイルエラー潰すより、 文法を学ぶなり、まっとうなサンプルコードを見るなりしたほうが、トータルでみると早くて、まともな設計ができるようになると思うので、 この記事は意味がない。 ちゃんと勉強しましょう。 環境 Windows10 で、コマンドプロンプトで実行。 この記事では、パスが通せていることを前提にしています。 exe 本題に入る前に - Visual Studio向けのソースコードをもってきたケース 'InitializeComponent' は現在のコンテキスト内に存在しません というコンパイルエラーがでる場合。 InitializeComponentは、通常、Visual Studioを使っている前提のソースコードです。 Formのコードなどがツールで自動生成されたものです。 コマンドプロンプト環境でコンパイルするのはハードル高いです。 この記事を見ても解決できません。 ごめんなさい。 本題 - Step. 0 - べた書き Hello Worldをやりたくて下記みたいなコードを書いたとします。 ふつうはコンパイル通るコードをコピペしてHello Worldやると思いますが。 BadExample. cs 1,1 : error CS0116: 名前空間にフィールドやメソッドのようなメンバーを直接含めることはできません。 C で処理を書くときはクラスで囲めということです。 まずは、長くても数十行くらいの コンパイルが通るサンプルコードを持ってきて、なんとなくの書き方を知るのがよいかと。 Step. 1 - コンパイルエラーが増えることもある Step. 0に対してクラスで囲んで対処。 BadExample. cs 1,7 : error CS1001: Identifier expected BadExample. cs 2,5 : error CS1520: Method must have a return type BadExample. cs 1,7 : error CS1001: ID がありません。 BadExample. cs 2,5 : error CS1520: メソッドは戻り値の型を持たなければなりません。 BadExample. cs 2,25 : error CS1001: ID がありません。 1つ潰すとコンパイルエラーが増えることはよくあります。 なお、慣れないうちはコンパイルエラーは 先頭から潰しましょう。 エラーメッセージのフォーマットは、 ファイル名 行番号,文字位置 : error エラー番号: エラーの説明 です。 特に「行番号」は大きな手掛かりになります。 Step. 2 Step. 1への対策として、ID いわゆる識別子 を付ける。 BadExample. cs 2,5 : error CS1520: Method must have a return type BadExample. cs 2,5 : error CS1520: メソッドは戻り値の型を持たなければなりません。 BadExample. cs 2,25 : error CS1001: ID がありません。 Step. 3 - コンパイラの解釈とプログラマの意図がずれている Step. 2のコンパイルエラーは、 このコードを書いた人が「 BadExampleクラスが WriteLineメソッドを持っているコードを書きたい。 」と解釈してエラーメッセージをだしています。 BadExample. cs 3,9 : error CS0103: The name 'WriteLine' does not exist in the current context BadExample. cs 3,9 : error CS0103: 名前 'WriteLine' は現在のコンテキスト内に存在しません。 BadExample. cs 3,19 : error CS0103: 名前 'HelloWorld' は現在のコンテキスト内に存在しません。 エラーが、「〇〇は現在のコンテキスト内に存在しません。 」だけになりました。 ようやく構文エラーが消えました。 構文エラーの場合、直接の原因でない箇所でもコンパイルエラーがでたりするので、まずは構文エラーを潰すのが定石だと思います。 (括弧の閉じ忘れとか、識別子が1個抜けてるとか、セミコロンを忘れているとかとか。 Visual Studio Codeとか、 構文をある程度解釈して 色分け表示してくれるようなエディタや統合開発環境を選べば、うっかり系の構文エラーはかなり減らせます。 ) Step. 4 - クラスを探す(Microsoft Docsがおすすめ) Step. 3では、コンパイラが WriteLineがないと言っているので、検索キーワード writeline site:microsoft. comとかでググるなりします。 今回のように、クラスを探すだけなら site:microsoft. comを付けるのがおすすめです。 「Console. WriteLine - Microsoft Docs」 が見つかるはずなので、開きます。 Consoleを知っているというテイで、ご容赦ください。。 名前空間:System Assemblies:System. Console. dll, mscorlib. dll, netstandard. dll とかかれているはずです。 別のクラスにも WriteLineがあるので注意。 というわけで、名前空間をつなげて System. Console. WriteLineとしてあげると、コンパイラがこれを特定できます。 なお、 using 名前空間;と宣言しておくと、 名前空間. は省略できます。 BadExample. cs 3,34 : error CS0103: 名前 'HelloWorld' は現在のコンテキスト内に存在しません。 Step. 5 - 文字列について(ちょっと脱線) 文字列は ""で囲む。 記事を書いている途中で、このミスは「わざとらしすぎる」ので、最初から"HelloWorld"にしようかと思ったが、警告内容が変わってめんどくさいので、そのままにした。 ちなみに "xxx"とすると、エスケープ文字を処置しなくて済むので、ファイルパスとかを埋め込むときとか正規表現書くときはこっちのほうが楽。 txt" エスケープ文字や "を含まない文字列については、 付きの表記のほうがミスしにくいのでお勧めしたい。 exe' は、エントリ ポイントに適切な静的 'Main' メソッドを含んでいません Step. 6 - Mainメソッドがないとプログラムの入口がわからない Mainメソッドがないよ。 ググってC のMainの書き方を調べたことにしてください。 [STAThread]つけ忘れてはまると可哀想なので、つけておきます。 BadExample. cs 2,6 : error CS0246: The type or namespace name 'STAThread' could not be found are you missing a using directive or an assembly reference? BadExample. cs 2,6 : error CS0246: The type or namespace name 'STAThreadAttribute' could not be found are you missing a using directive or an assembly reference? cs 2,6 : error CS0246: 型または名前空間名 'STAThread' が見つかりませんでした。 using ディレクティブまたはアセンブリ参照が不足しています。 BadExample. cs 2,6 : error CS0246: 型または名前空間名 'STAThreadAttribute' が見つかりませんでした。 using ディレクティブまたはアセンブリ参照が不足しています。 Step. 7 ディレクティブまたはアセンブリ参照が不足しています。 は、名前空間の指定が足りていなくて、コンパイラが見つけられていないケースが多いです。 site:microsoft. com をつけてググります。 STAThreadAttribute Class 名前空間:System Assemblies:System. Runtime. dll, mscorlib. dll, netstandard. dll System に存在しているので、.

次の

Office TANAKA

コンパイル エラー

a メモリが不足していることを示すエラーメッセージが出力された場合,別のプログラムが動作している可能性があります。 別のプログラムを停止するか,そのプログラムが終了するのを待って再コンパイルしてください。 b 起動できないことを示すエラーメッセージが出力された場合は,COBOL2002が提供している実行可能ファイルがない可能性があります。 COBOL2002を再インストールしてください。 c 論理エラーを示すエラーメッセージが出力された場合は,次の処置をとってください。 ソースファイルに誤りが残っているときは,これを修正して再コンパイルします。 を実施しても同じエラーメッセージが出力されるときは,コンパイラが適切にエラーチェックをするのが難しい文法誤りがある可能性がありますので,ソースファイルを見直してください。 を実施しても同じエラーメッセージが再び出力されるときは,当社保守員に連絡してください。 このとき,ソースファイル,登録集原文,およびコンパイルリストファイルが資料として必要になります。 d データ項目が多過ぎることを示すエラーメッセージが表示された場合は,次の処置をとってください。 CSVファイルの入出力文は,CSVファイルで扱う基本項目数を減らす。 CSVファイルの入出力文以外では,文の対象となっているデータ項目数を減らす。 または,プログラムを分割する。 上記の処置を実施しても同じエラーメッセージが再び出力されるときは,当社保守員に連絡してください。 [][][] [] All Rights Reserved. Copyright C 2017,2018, Hitachi, Ltd.

次の

C#のコンパイルエラーの対処例を書いてみる

コンパイル エラー

上図は、文字列型 String の変数に、Setステートメントを使って、オブジェクト ここではWorksheetオブジェクト を格納しようとしています。 だからエラーです。 ヘルプを見ると、このエラーの原因があれこれと書かれていますし、よく見かけるような気がしたのですが、いざ再現しようとすると、なかなか発生しません。 もしかすると、あまり起こらないエラーなのかもしれません。 いずれにしても「オブジェクトが必要です」というのですから、必要なオブジェクトを正しく指定していないということでしょう。 オブジェクトを指定し忘れているケースとして、いくつかの誤りを試してみましたが、次のようなエラーになりました。 Font. 変数myRangeはバリアント型で宣言しました。 myRangeなんて名前からして、おそらくは、この変数をオブジェクト変数として何かのセルを格納し、以降は変数を操作したいのではないかと想像できます。 しかし、うっかり Setステートメントを忘れてしまいました。 でも、ここでエラーにはなりません。 なぜなら、変数myRangeを バリアント型で宣言してしまったからです。 バリアント型は何でも格納できる万能の型です。 今回のようにオブジェクトを格納することもできますし、数値も文字列も格納できます。 Rangeオブジェクトはプロパティを省略するとValueプロパティが指定されたものとみなされます。 したがって、変数myRangeには「Range "A1". Value」が格納されます。 いたって正常な処理です。 しかし、次の行の「myRange. Font. ColorIndex」は「数値. Font. ColorIndex」または「文字列. Font. ColorIndex」ということになりますので「オブジェクトが必要です」というエラーになるわけです。 では、同じコードで、変数myRangeをオブジェクト型で宣言したらどうでしょう。 Font. 今度の変数myRangeはオブジェクト型 Range です。 同じようにRange "A1" のプロパティが省略されていますので「Range "A1". Value」とみなされます。 オブジェクト型変数にはオブジェクトしか格納できません。 文字列や数値は格納できないので、そこでエラーです。

次の