template実装のdllexportとパフォーマンス
通常、あまりtemplateクラスをdllexportすることはないと思いますが、仮にした場合、VCコンパイラが警告を言ってきます。
DLL利用側のコンパイル時に、ヘッダーの内容が変わっているとテンプレート実装が変わってしまう可能性があるので、その警告です。
実は、template class __declspec(dllexport) CHoge
しかし、これって実装はDLL側にあるから、利用側はdllimport指定することで、おそらくコンパイルしない。
結果モジュール間での関数呼び出しになるから呼び出しのコストがあるよなって思って、テストしたんですが案の定でした。
※ベクトルのNormalizeを1テストあたり1000万回行い、それを20回行った際の最小、平均、最大
場合によっては警告出てても、「DLLビルドとEXEビルドに同じの使ってるからいいねん!」ってやるしかないよな。
そう思った。
汚えテストコードはこちら。
github.com
Windowsシェル拡張DLLが作りたい。
作りたいっていうか、ほしい機能があるので、作ろうと思った。
とりあえずMicrosoft Learnとか読んだけど、まずCOMをちゃんと理解しないとあかんみたい。
COMなんかActiveXとかDirectXとかでなんとなくに使ってるくらいで、作るってのはやったことないな。
(ActiveXは作るに該当するけど、COM周りを自分で作ってるわけじゃないしな)
このあたりとか
learn.microsoft.com
このあたりとか読んでる
learn.microsoft.com
ダウンロードしたVulkanSDKでWindows向けにプログラムを作成する際のメモ
shadercやspirv crossを使う際はsharedライブラリを使う。
上記のライブラリがMDのCRTでビルドされているため。
解決には自分でビルドするか、Shread版を使うしかない。
shadercは特に気にする必要がないが、spirv crossに関してはC版を使わないとshared版だけではリンク解決できない。
新しい趣味、電子工作はじめました
電子工作はじめました。
もともと高校が情報と電気の間みたいな科だったので、ある程度はかじっていたのですが。
プログラムはさんざん仕事でも触るし、あんまり趣味でやり始めても完成まで持っていかないんですよね。
若い頃の熱意がない。
最近オーディオに凝ってるのもあるので、自分でオペアンプ使ってアンプでも作ってみようかと。
とりあえず、こんなかんじで。
まずはACアダプタから、スイッチ通して電源確認用のLEDの接続、確認。
OK。
ステレオミニプラグメスから可変抵抗器接続。
OK。
オペアンプ回路組み込み。
NG。
出力が0。
はて・・・・?
そもそも初めて自分でやろうとしてて、詳しく知らなかった。
オペアンプには単電源用と両電源用っていうのがあるんですね。
両電源っていうのはマイナスの電圧なんですね。
それで動いてないのかな・・・。
いや、これACアダプタだし。
ネットで方法探そう。
でも全回路図そのまま使うのだけはしないぞ。
コンデンサもとりあえず無しでやって、コケて必要性を感じてから使うんだ。