プログラミング初心者です。
VB2010からC++で作成したDLLの配列連携で困っています。
下記のサンプルで整数配列(integer)の連携を確認できました。
しかし、double型の連携が同サンプルでは正しい値が渡されません。
(プラットフォーム呼び出しサンプルの”整数 ByVal の配列”を使用しました。)
プラットフォーム呼び出しサンプル
http://msdn.microsoft.com/ja-jp/library/8bbftkst …
double型の配列は同じ方法で可能なのでしょうか。
別の方法でないと動作しないのであれば、そちらも教えてください。
よろしくお願い致します。
No.2ベストアンサー
- 回答日時:
VBの配列はC言語から見るとSAFEARRAY型になります。
これを上手く扱えないと、VB⇔Cの処理は難しくなります。
×:func(double *param)
○:func(SAFEARRAY *param) ★ByValの場合です。
これを扱うAPIがOLEAUT32にあります。
#pragma comment(lib,"OLEAUT32.LIB")をソースに
記述するか、リンカでこのライブラリを指定します。
http://marupeke296.com/IKDADV_CPP_SAFEARRAY.html
この辺にサンプルがあるので、調べてみてください。
No.1
- 回答日時:
単純な1次元配列なら
DLL側を
__declsepc(dllexport) void __stdcall foo( double* pSrc, int nLen )
といった具合に定義します
pSrcは配列へのポインタ nLenが配列の大きさ
VB.NET側では
Declare Sub foo lib "DLL名" ( ByRef d1 as double, ByVal nLen as integer)
と定義しておいて
使用時には
dim a(20) as Double
' 配列の初期化処理などを記述
foo( a(0), a.Length )
といった具合に使います
質問時に どのようなコードを書いて 実行したかを明記したほうがいいでしょう
期待する結果と 実際の結果がどのように食い違っているかも出来る限り具体化すると回答がつきやすいですよ
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
C# 配列の変数宣言について。
-
配列の参照渡しで型が一致しま...
-
配列を含む構造体の初期値について
-
配列で格納したものをmsgboxで...
-
メモリの初期値
-
C# Listを使わずに2次元配列の...
-
C言語 変換指定%sについてです。
-
C言語で特定列だけを抽出して配...
-
【C言語】配列の中に配列を入れ...
-
テキストファイルから文字列を...
-
配列をEraseしてもメモリが開放...
-
Excel、VBAのユーザーフォーム...
-
配列の重複削除について
-
RGB値を画像(PNG・BMPJPEGなど)...
-
【速いブラインドタッチ】手を...
-
Dimとは・・・
-
2次元配列を戻り値とする関数?
-
メモリーの確保について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
配列で格納したものをmsgboxで...
-
C# Listを使わずに2次元配列の...
-
C# 配列の変数宣言について。
-
先頭アドレスとは何ですか?
-
C言語で特定列だけを抽出して配...
-
配列の参照渡しで型が一致しま...
-
VBで構造体の配列を関数に渡す...
-
C++ vectorに配列をプッシュしたい
-
【速いブラインドタッチ】手を...
-
unsigned char配列への入力の仕方
-
配列をEraseしてもメモリが開放...
-
【C言語】配列の中に配列を入れ...
-
ExcelVBAで質問です。離れた二...
-
4勤2休のシフト作成
-
Functionの戻り値を2次元配列...
-
Redimした動的配列はEraseする...
-
配列を含む構造体の初期値について
-
複数の選択範囲の行番号を個別...
おすすめ情報