蛇使いな彼女BLOG
【第67回】 ビルドとコンパイルの方法
2022.09.02
皆さんこんにちは!今日は私が普段使っているVisual Studioのコンパイル機能について情報提供したいと思います👏
実は、研究分野の業務でC言語?のスクリプトを頂いたのですが、Visual Studioでは当然C言語もサポートされているのでこれを実行したいと思います♬
作業環境に関して…
スクリプトは圧縮形式(zip)で頂いたので解凍処理して使います。
Windows10 Pro
Microsoft Visual Studio Community 2019 Version 16.8.4
です。
では早速やってみましょう\(^O^)/
まずスクリプトの構造にもよるんですが、私の場合解凍した際、一部ファイルで「ファイルが破損しています」なるメッセージが出ました。
「まあ中身Cだし、よくよく確認するとエラーファイルもテキスト保存用のCACHEファイルだし・・・(苦笑) あるある~」と思って当然エラーを吐かれました(笑))
どうやらWindowsのOSではパスに対する文字数の制限があるらしいので、もし解凍処理したときにエラーメッセージがでた場合、Cドライブ直下など上の階層に展開用のファイルを作ってそこで解凍処理をしましょう。
パス全体の文字数を減らすことで、パスが長すぎる事によるエラーは避けることが出来ます。
ファイルが無事に展開出来たら次はVisual Studioでスクリプトを開きます。
Visual Studio上部メニューの「ファイル」から新規プロジェクトをC言語として立ち上げ、そこにコードをコピペしても良いのですが、今回は複数のファイルでClass構造を成していたので、ソリューションファイル(?)いわゆるコードエディタで作成したファイルを直接開きました。
するとVisual Studioが勝手にファイルに適したプラットフォームを用意してくれるようです。
ちなみに私もこの記事を書く際に知りましたが、C言語から派生して出来たC++、C#等の言語もありますが、C++はC言語の拡張版で、C#はどちらかというとJava要素の入った別物らしいです。
(ゲーム開発によく使われているイメージです。)
今回使うファイルはC#なのですが、それを知らずに文頭でC言語と書いてしまっています
(皆がC!C!って言うから全部C言語の仲間かと…笑)
Python以外の言語は普段触らないのでご了承くださいm(__)m
さて、ビルドを開始する前にまずソリューションの構成とアクティブプラットホームを確認しましょう。
構成に関して今回はDebugでOKです。
プラットホームはデフォルトだとAny CPUですが、これは使用しているOSに依存するという意味らしいです。
Visual Studio“チュートリアル: アプリケーションを構築する“ではこれをx64固定に変更しているようですが、これはどういう理由からかイマイチ分かりませんでした。
どのOSで作ったか分からないプロジェクトを読み込むときはAny CPUが使い勝手よさそうな・・??
まあ変更したい場合は構成マネージャーをクリック後アクティブソリューションプラットホームタブの<新規作成>から変更可能です。
次にビルドを開始します。Visual Studioでスクリプトを開いた後は上部メニュー「ビルド」>ソリューションのビルドをクリックします。
ビルドを行う事でスクリプトコード全体をチェックし、バグやエラーコードが無いか確認してくれます。
もしエラーコードがあった場合は以下画像の出力欄に表示されます。
ファイルを読み込んだり書き出したりするプログラムではおおよそディレクトリパスにエラーがでるので、
ここは自分のパソコン用に書き換えましょう。
問題なく実行出来る場合は出力タブの左下、矢印で示した部分に“ビルド正常終了”と表示されます。
次にトップメニューのデバッグ>デバッグなしで開始を選択します。
これでプログラムが無事実行されます(大抵は)😊
・・・でましたエラー・・・。
ビルドが正常に終了しても、外部ファイルによって引き起こされるエラーは当然発生します。
その場合コンソール画面に詳細が表示されたり、Visual Studioでデバッグを行う事でエラー位置を特定できます。
このエラーですが、読み込んだデータが原因で発生しています。
エラー原因のコード「file」にマーカーが付いています。
マウスポインターをマーカー部分に重ねるか、テキストビジュアライザーを開くことで詳細を確認することが出来ます。
どうやら062023.CSVファイルで実行が止まったので、このファイルの中身を開いてみると、データが1行しかありませんでした。
この分だとC#スクリプトにエラー処理を書き足すか、Pythonで処理したファイルを渡すしかなさそうです。
・・・なかなか上手くいかないもんですね💔
またC#のスクリプトコードを見て思ったことは、例えばCSVファイルの読み込みをする際Pythonならpandasライブラリを使って1行で記述できますが、C#はその動作を1から全て自分で記載しないといけない(?)印象を受けました・・・💦
いわゆるライブラリを自己で作成して使うみたいな感じです(ぎゃー!)
確かにコーディングの自由度は高いし、早いと言われる理由はなんとなく分かりましたが、これだとデータ解析には時間が掛かりそう・・・言語によって得意不得意があるみたいです💡
今回はビルドとコンパイルのお話でした。