より良いエンジニアを目指して

1日1つ。良くなる!上手くなる!

C++

Visual StudioでRapidJsonを利用してみる

C++

RapidJsonはC++のJsonパーサーです。Tencentによるオープンソースとなっています。 github.com GitHubのページにも書いてありますが、特徴としては RapidXmlにインスパイアを受けた その名(Rapid)の通り、速い メモリに優しい ヘッダーファイルのみ 特に一番…

Visual Studio 2019 + Resharper + Windows と CLion + MacでC++のコーディングを比較した結果

C++

プライベートのPCはMacでPararells Desktop上でWindowsを動かしているため、CLionとResharper+Windowsを比較してみました。 あくまでも個人的な感想ですが使い勝手としては、Visual Studio 2019 + Resharper + Windowsの方が良いです。 Windowsも動かせると…

未解決の外部シンボル __imp____glewBindBuffer 〜エラー

C++

LNK2019 未解決の外部シンボル impglewBindBuffer が関数 "public: thiscall VertexArray::VertexArray(float const ,unsigned int,unsigned int const ,unsigned int)" (??0VertexArray@@QAE@PBMIPBII@Z) で参照されました 以下の記事に助けられました atel…

Visual Studio 2019 + Windows + OpenGL

C++

以前にMac + CLion + OpenGLは試しましたが、Windows側、つまりVisual Studio 2019 + Windows + OpenGLも試すことにしました。 以下記事を参考にしました。 qiita.com 以下のコードを試す。 programmer.help #include <gl/glew.h> #include <glut.h> #include <GLFW/glfw3.h> #include <glm/glm.hpp> ヘッダ</glm/glm.hpp></glfw/glfw3.h></glut.h></gl/glew.h>…

Mac + CLion + OpenGL

C++

OpenGL自体はデフォルトでMacに入っていますので、OpenGL自体をインストールすることは不要ですが、他に設定が必要です。 基本的に以下の記事を参考にすればOKです。 OpenGL environment configuration under Mac CLion つまづいたがcmakeのファイル以下はOp…

CLionのファイル生成時の署名部分を変更したい

C++

CLionでC++ファイルを生成すると、以下のような記述が挿入されてしまいます。 // // Created by UserName on 2021/03/03 // 変更したいなあと探し回りました。 File and Code Templates - C File Headerより編集可能です。

Visual Studio 2019 + Windows + SDL

C++

WindowsにおけるC++のSimple Media Direct Layerの導入方法メモ。 Visual Studio 2019でNuGetを導入して、以下のプロジェクトに設定を行います。 コンソールアプリを選択 NuGetでsdlをインストール プロジェクトの設定 - C++ $(SolutionDir)packages\sdl2.2.…

Mac + CLion + SDL

C++

SDLを動かしてみたいなーということで、Macでも動くなら、MacでCLionやってみるか、と。 慣れないことはするものではないですね、みたいなことになりました。慣れないことだから挑戦するべきではあるのですが。 公式ドキュメントがあっさりしているので、日…

What's Interop? それは相互運用

C#とアンマネージドなC++のコードの間の値の受け渡しをするための仕組みがInterop。相互運用になります。 C#を扱うものとしては理解しておきたいので、これを機会に実際に手を動かして勉強することにしました。 docs.microsoft.com docs.microsoft.com 特に…

C++勉強会 #7

C++

仕事でC++も触るので参加するぞと思っていたのですが、やっと第7回で参加できました。 caddi.connpass.com 途中参加の私はお構いなしで、特に勉強会の説明もなしにスタート。 まあ、参加していなかった私がよくない。結構コアな話。 テーマは「type erasure…

やねうらお氏の「Windowsプロフェッショナルゲームプログラミング 」を読む

C++

中古で「Windowsプロフェッショナルゲームプログラミング 」というのを読みました。 books.google.co.jp 2002年(!)と日韓ワールドカップが開催されていた頃の本です。 もう昔の本ですね。 やねうらお氏 今では無料体験でプロのゲームが遊べます。 が、ひ…

UMDHでメモリーリーク調査

C++

C#では、dotMemoryという有償ツールでメモリーリーク調査をしていました ですが、Unmanagedなメモリーについてはタッチできないので、UMDHでのメモリーリーク調査が必要になることがあるかなと勉強してみることにしました。 やや古い記事ですが、下記がとて…

C++では関数を先に宣言しないとコンパイルエラー

C++

久しぶりにC++をやっていて、大事なことを忘れていました。 以下のソースはコンパイルエラーとなります。 #include <iostream> using namespace std; int main() { cout << "半径10の円の面積:" << getCircleArea(10) << endl; return 0; } // コンパイルエラー double</iostream>…

C++では変数は初期化しないと、どうなるかわからない

C++

C#やPythonなどの最近の言語では int a; と変数を定義して、出力させれば「0」が返ってきます。 が、C++では、保証されてません。 #include <iostream> int main() { // 初期化しない int a; std::cout << a << std::endl; return 0; } 43650794という桁外れな値が返却</iostream>…

オブジェクトを=で代入したらコピー

C++

C++の場合、以下のようにオブジェクトを代入したらコピーになります。 MyClass obj2 = obj1; obj2とobj1は別のオブジェクトです。 #include <iostream> using namespace std; class MyClass { public: int data; }; int main() { MyClass obj1 = MyClass(); obj1.data </iostream>…

C++の場合は変数宣言しただけでオブジェクトが生成されることがある

C++

C++の場合、以下のようにオブジェクトの変数宣言しただけで、オブジェクトが生成されることがあるのに気づいて驚きました。 MyClass obj1; #include <iostream> using namespace std; class MyClass { public: int data; MyClass() { data = 0; } }; int main() { MyCl</iostream>…

ヘッダーファイルとソースファイルは同じ名前でなくて良かった

C++

ヘッダーファイルとソースファイルの名前は同じにするものだと思っていました。 ヘッダーファイルがa.hであれば、ソースファイル(*.cpp)がa.cppという形です。 C++の本を読んでいたのですが、そうでなくてもコンパイルは通るようです。 a.cppに以下のような…

Visual Studio2019でCppUnitを利用する

C++

C++では、GoogleTestで単体テストができますがCppUnitも存在します。 docs.microsoft.com テスト対象のコード Calculation.h #pragma once inline int add(int a, int b) { return 5; // あえて間違えたコード } テストプロジェクトの生成 テストプロジェク…

C++のメンバ初期化子リスト

C++

Effective C++ 第3版を読んでいたのですが、なかなか味わいのある本です。オススメです。 www.maruzen-publishing.co.jp ただ、C++に語っているだけではなく、プログラミングについて考えさせられる内容になっています。 一度でもC++を齧ったことのある方に…

Visual Studio 2019 + GoogleTestを試す

C++

C++に単体テストフレームワークであるGoogleTestがあるので試してみることにしました。 github.com MSDNに記事があるからそれでいいんじゃん、なのですが、つまづいたのでメモです。 docs.microsoft.com 環境 Visual Studio 2019 手順 Consoleアプリケーショ…

C++の例外処理では数値をthrowできることに驚いた件

C++

仕事上、C++を使うのですが、C#ではExceptionを継承した例外がスローされるので try { throw new Exception("なんか例外") } catch(Exception e) { Console.WriteLine(e.ToString()); } などで、だいたい何が起きたのか把握できるのです。 が、C++では数値で…

UWPミーツDirectX

C++

C++についておさらいしたかったので、DirectXを使ったC++を試すことにしました。 docs.microsoft.com 開発環境について サイトではVisual Studio 2015ですが、Visual Studio 2019で開発しました UWPとC++によるゲーム開発を導入 ユニバーサルWindowsが開発で…

CppTripleSlashを使って、C++のコメントを書きやすく読みやすく

C++

Visual Studioの支援機能によるものですが、C#の書きやすい点として、///とスラッシュ3つで自動的にメソッドやプロパティのコメントを入力するフォーマットが生成される点にあります。 仕事上、C#だけでなく、C++を書くシーンもあるので、C#と同様に///でコ…