🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

3301閲覧

VB.netからdll(c++)へ構造体を渡す方法を教えてください

puroguraman

総合スコア20

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2019/10/16 12:40

編集2019/10/16 13:21

VB.netからdll(c++)へ構造体を渡すにはどうすればいいのでしょうか
完全にお手上げです。書籍もないしネットで検索しまくってもありませんでした。

下記のようにnumberという値を送りたいです。

'VB側

public class A

Public Structure data Public number As single Public number() As single End Structure

Public struct As New data

Public Declare Function Draw Lib "C:(略)\simulation.dll" (ByRef data As data) As Boolean

'一定時間たてば送る。
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
struct.number=10
Call DrawSpace(struct)
end sub

end class

//C++側(ヘッダファイル)
#ifdef __cplusplus
#define EXPORT extern "C" __declspec(dllexport)
#else
#define EXPORT __declspec(dllexport)
#endif

typedef struct {
float number;
} data;

namespace Tips_Win32DLL
{
bool __stdcall Draw(data number_data);
}

//C++側(メインファイル)
namespace Tips_Win32DLL
{
bool __stdcall DrawSpace(AAA_C _data)
{

return true; }

}

VB.netとC++間でなにがどのデータに結びついているかというのはどこでどうなっているのかさっぱりです
コードは端折りましたがエラーを起こさないように書いただけで値は来ていません。
どなたか教えてください

ちなみに見よう見まねでVBのcallの前に
Dim size As Integer = Marshal.SizeOf(GetType(data))
'ヒープ領域にサイズ分のメモリ確保
Dim iPtr As IntPtr = Marshal.AllocHGlobal(size)
'// マネージド構造体をアンマネージドにコピーする
Marshal.StructureToPtr(struct, iPtr, False)
としても効果なく

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

本件再投稿予定のため。

投稿2019/10/16 14:44

puroguraman

総合スコア20

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問