vc++

カスタムビルドステップを使ってVC++のソリューションにflexによるソース生成処理を統合する

VC++でflexで生成したソースをコンパイルできることがわかったので、flexによるソース生成→ソリューションのビルドを一連の流れで実行できるように、カスタムビルドステップを定義してみた。まず、仮に"test++.l"というflexの入力ファイルがあるとして、それ…

CComSafeArrayを使って生成した配列を返すCOMのメソッド

CComSafeArrayクラスを使うと、以下のように簡単にSAFEARRAY構造体を簡単に扱うことができる。 STDMETHODIMP CHoge::get_Array(VARIANT* pVal) { VariantInit(pVal); pVal->vt = VT_ARRAY | VT_BSTR; CComSafeArray<BSTR> psa; psa.Add(ComBSTR("hoge")); psa.Add(</bstr>…

JScriptからCOMコンポーネントのメソッド/プロパティに対してSAFEARRAYを渡す方法

JScriptの配列はSAFEARRAYじゃないので、COMのインターフェースに配列を渡す場合に型がちがうと言われておこられてしまう。それを回避するには、ScriptControlを使えばいい ScriptControlはScriptEngineをそのままコンポーネント化したようなやつで、このコ…