2023年1月28日土曜日

gccのpredefine macroでc++のバージョンを指定する方法のメモ

サクッと以下のような感じで
#if __cplusplus == 201703L // C++17
#elif __cplusplus == 201402L //C++14
#elif __cplusplus == 201103L //C++11
#else // Unknown
#endif

2023年1月24日火曜日

GUIDを文字列で出力する方法のメモ

デバッグのためにGUIDを標準出力に出したかっただけ。

GUID guid; //何かGUIDを取得する処理 WCHAR strGUID[39]; //要combaseapi.h StringFromGUID2(guid, strGUID, 39); std::wcout << strGUID << std::endl;

2023年1月21日土曜日

C++でバイナリファイルを読む方法のメモ

バイナリファイルを一度で読みたかったので。ほかにもいろいろ方法はあると思うけど、とりあえず簡易に。

C++11以降。たぶん1バイトずつ読むので、大きいファイルだと遅いかも(知らんけど)。

#include <string> #include <iostream> #include <fstream> #include <vector> std::vector<char> readAllBinary(const std::string& fileName){ std::fstream file(fileName, std::ios::in | std::ios::binary); std::vector<char> buffer((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>()); file.close(); return buffer; } int main(){ std::string filePath="m_01.jp"; auto vecBuffer = readAllBinary(filePath); //ファイルの読み込みに失敗している場合サイズは0になる。 std::cout << "FileSize: " << vecBuffer.size() << std::endl; //buffer pointer char* buffdata = vecBuffer.data(); // some process return 0; }

2023年1月15日日曜日

VisualStudioでcmakeしたらエラーになった件

visual studioでcmakeしようとしたらエラーになった

こんなエラーが出た

CMake Error: CMAKE_CSharp_COMPILER not set, after EnableLanguage

こうしたら通った

CMakeジェネレータから適切なものを選択する。

設定方法は、

  1. cmakeの設定を開く。開き方は、cmakeの概要ページから開くか、CmakeSettings.jsonを右クリック->ファイルを開くアプリケーションを選択->CMakeエディターで開く。
  2. "高度な設定を表示する"を選択 CMakeジェネレータから適切なものを選択する。自分の場合、VS2022(x64)だったので、"Visual Studio 17 2922 Win64"を選択した。
  3. Ctl+Sとかで保存。
  4. ソリューションエクスプローラーから、プロジェクトを選択して、"キャッシュの削除と再構成"を行う。