前提・実現したいこと
C++で作成したDLLからVBへ配列のデータを渡したい。
C++DLL:ファイルを読み込んで読み込んだデータを配列にセット
VB:C++のデータを読み出して、データを引き継ぐ
発生している問題・エラーメッセージ
VB側で取得した配列のデータが全て0になってしまう。
該当のソースコード
C++
コード
typedef struct _DATA_KAKEIBO { long syokuhi; // 食費 long nichiyohin; // 日用品 } DATA_KAKEIBO; //ファイルからデータを読み出す KAKEIBO_DLL_API int WINAPI ReadData(int BufCnt, DATA_KAKEIBO* pDataKakeibo); // BufCnt:読み出すデータの数 // pDataKakeibo:読み出したデータ
VB
コード
<StructLayout(LayoutKind.Sequential)> Structure DATA_KAKEIBO Dim Syokuhi As Integer ' 食費 Dim Nichiyohin As Integer ' 日用品 End Structure Declare Function ReadData Lib "KAKEIBO_DLL.dll" (ByVal BufCnt As Integer, ByVal DataKakeibo() As DATA_KAKEIBO) As Integer ' ファイルからデータを読み出す '読み出し時ソース Dim Cnt As Integer '読み出すデータの数 Dim BufDataKakeibo(Cnt - 1) As DATA_KAKEIBO ’読み出したデータ Dif Ref As Integer '読み出した結果 For i = 0 To (Cnt - 1) BufDataKakeibo(i).Syokuhi = 0 BufDataKakeibo(i).Nichiyohin = 0 Next i Ref = ReadData(Cnt, BufDataKakeibo) ’BufDataKakeiboにセットされたデータが全て0になってしまう
### 試したこと ReadData Lib "KAKEIBO_DLL.dll" (ByVal BufCnt As Integer, ByVal DataKakeibo() As DATA_KAKEIBO) As Integer のByVal DataKakeiboをByRefに変更するとシステムエラーになってしまい実行できませんでした。 ReadData Lib "KAKEIBO_DLL.dll" (ByVal BufCnt As Integer, ByVal DataKakeibo() As DATA_KAKEIBO) As Integer に変更する方法も試したのですが、今のところ成功しておりません。 ### 補足情報(FW/ツールのバージョンなど) Visual studio2013
回答1件
あなたの回答
tips
プレビュー