ま、そんなところで。

ニッチな技術系メモとか、車輪を再発明してみたりとか.

C++

VirtualBox の Guest OS 上でビルドすると internal compiler error が多発する現象 (Ubuntu 22.04.1)

Guest OS 上でビルド中 internal compiler error が発生してビルドできない・・・ Ubuntu公式リポジトリのVirtualBoxとホスト側カーネルの不整合が原因 公式リポジトリのVirtualBoxをOracle提供のものに変更すれば解決. 参考サイト Guest OS 上でビルド中 in…

埋め込みpythonでのみモジュールのModuleLoadErrorが起こる問題

埋め込みpythonでのみモジュールがModuleLoadErrorを起こす!? pythonモジュール側のシンボルが解決できないのが原因 組み込み先のシンボルを可視化する --export-dynamicを指定してリンクする python組み込み先が共有ライブラリの場合の注意点 リファレン…

C/C++アプリケーションへPythonを埋め込む

アプリケーションの一部をPythonで作る (準備) 通常のパッケージをインストール テスト用最小コード (注意点1) embeddableにはDebug版が付属しない (注意点2) Py_SetProgramNameにはインタプリタのパスを指定する 結構使えそう リファレンス アプリケーショ…

(続)Unmanagedの C++ から Managedのクラスを使う

の続き. ManagedクラスとUnmanagedクラスの生存期間差の問題 msclr::auto_gcroot<T>テンプレートクラス スコープ利用に特化した msclr::auto_handle<T> テンプレート 参考情報 ManagedクラスとUnmanagedクラスの生存期間差の問題 Unmanaged C++からManagedクラスを</t></t>…

Unmanagedの C++ から Managedのクラスを使う

Pure C++コードから、.NET Frameworkベースのライブラリを使いたい・・・ UnmanagedクラスにManagedクラスのハンドル型を持たせられる? msclr::gcroot<T> を使え! じゃあ、value class の場合はどうするの・・? さあ、gcrootを使ってWrapperを作ろう. Wrappe</t>…

MacOS MojaveでCmakeがOpenMPを見つけてくれない件

CmakeをupdateしたらOpenMPが見つからないぞ!? テストでfind_packageしてみるけれども見つからない・・・ それ変数やない、キャッシュ変数や・・ 参考記事 CmakeをupdateしたらOpenMPが見つからないぞ!? MacでOpenMPを使ったクロスプラットフォームなC++コー…

C++でMessagePackを使ってみる(6)〜 Polymorphism(多態性)とシリアライズ 〜

多態性キープしてシリアライズしたいけど・・ ポリモーフィックシリアライズ対応 Step.1 ポリモーフィックシリアライズ対応を示すクラスを定義する Step.2 ポリモーフィック型シリアライズ対応の基底クラスを準備する Step.3 ポリモーフィック型シリアライズ…

C++でMessagePackを使ってみる(5)〜 msgpack::objectの読み書き 〜

msgpack::object を直接読み書きする 各種コンテナの型とタイプID object_str の読み書き object_bin の読み書き object_array の読み書き object_map の読み書き 参考記事 msgpack::object を直接読み書きする カスタムアダプタが対象とする型の書き込み実…

C++でMessagePackを使ってみる(4)〜 カスタムアダプタ 〜

シリアライズ/デシリアライズをクラスの外から定義する 定義できるカスタムアダプタの種類は5つ pack アダプタ(シリアライズ) object アダプタ(シリアライズ) object_with_zone アダプタ(シリアライズ) convert アダプタ(デシリアライズ) as アダプ…

C++でMessagePackを使ってみる(3)〜 シリアライズ/デシリアライズの流れ 〜

データ形態を変換する関数 3つのオブジェクトの形態 シリアライズ操作 C/C++オブジェクト → msgpack format bytes C/C++オブジェクト → msgpack::object 変換 msgpack::object → msgpack format bytes 変換 デシリアライズ操作 msgpack format bytes → msgpa…

C++でMessagePackを使ってみる(2)〜 派生クラスの場合 〜

継承クラスを含めてシリアライズ/デシリアライズする 継承クラスの場合は基底クラスのメンバ変数もシリアライズ/デシリアライズしなければならないため、すこし手を加える必要があります. クラスの定義 基本的な条件に加えて、 以下の条件を満たすように定義…

C++でMessagePackを使ってみる(1)〜 基本の使い方 〜

仕事でMessagePack - C/C++を使うことがあったのでメモ. MessagePackって何? 基本的な使い方 ヘッダのインクルード 使ってみよう 対象クラスの定義 シリアライズ デシリアライズ 参考記事 MessagePackって何? 様々なプラットフォームで利用できるオープン…

Google C++ Testをソースコードのままビルドツリーへ組み込む

C++

Google C++ Test ライブラリ作るのめんどくさーい どうやって・・? 1.以下の2つインクルードパスを設定する. 2. プロジェクト内でgtest-all.ccをインクルード Google C++ Test ライブラリ作るのめんどくさーい C++のUnitTestっていえば、GoogleC++Testの人…

VS2012のスレッド関連C++ライブラリのバグ回避方法メモ

C++

VS2012のC++ライブラリに含まれるスレッド関係がボロボロ いまさらだけどVS2012で追加されているC++11関連のスレッド関係ライブラリがひどい。 もう使っているケースはあまりないと思いますが、注意喚起と対策をメモ。 1. std::threadのメモリリーク C++11規…

C++でLINQ!! (cpplinq.hppを使ってみた!)

C++

C#のLinqとかJavaのStream APIとか、何かと関数型言語の機能が既存言語に組み入れられるケースが増えてますね。 いつも後れを取ってしまうC++ですが、C#のLinqみたいなことがC++でもできないかな〜と探してみると、ありました。 Linq for C++ ヘッダファイル…