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)
としても効果なく
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。