私は、Excel VBAから自分のC++ DLL関数を呼び出すしたいと思います:Excel VBAからC++へのポインタへの参照を渡すことはできますか?
void my_cpp_fun (int& n_size, double*& my_array);
C++関数は、可変サイズn_sizeの配列my_arrayでを作成します(このサイズはmy_cpp_fun内で計算されます)。
C++コードでExcel固有のものを使用せずに、この関数をVBAと同じようにインターフェイスすることはできますか?私は新しいを使用してC++のdll内のメモリを割り当てる場合は、そのメモリは一度利用できるようになります:だから基本的に私が探していますが
Declare Sub my_cpp_fun Lib "my_cpp.dll" (n_size As Long, Ref_to_Ptr_Qualifier my_array As Double)
ちょうど私に発生した別の問題のようなVBAのDeclareステートメントである
DLL関数はVBに制御を返しますか?それ以外の場合は、上記無意味です...
は、だから、私は – Hans
(n_sizeロング、ダブルとしてMagic_Ref_to_ptr_qualifierのmy_arrayで同様)サブmy_cpp_fun Libの「my_cpp.dll」を宣言し のような単純なものを考えていた?ExcelのAPIを使用せずには不可能であることは可能であるが、それは方法ですそのルートに行く価値よりも多くのトラブル。 VBとのインターフェイスをとるときに、COM DLLが未処理のDLLをラップするのははるかに簡単です。 –
いいえ、インターフェイスの表面積が小さい場合、COMよりも宣言が簡単です。 COMは、特にC++の裏側にある王様の痛みです。 –