掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
構造体のマーシャリング (ID:81826)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
質問させてください。 VB.net2003にて、構造体をアンマネージDLLに渡そうとしているのですが、 マーシャリングできないというエラーが出ます。 何をしているかというと、複数のVB.netアプリで情報を共有する必要があり、 それを実現する方法として、ファイルマッピングを使用しています。 (他に.netならではの方法があるのかもしれませんが、納期が短いのと、 自分がVB6使いなもので・・・^^;) ''24バイトの構造体 <StructLayout(LayoutKind.Sequential)> Structure Person Dim Age As Integer <VBFixedString(20), MarshalAs(UnmanagedType.ByValTStr, SizeConst:=20)> _ Dim Name As String End Structure ''一人24バイト×4人で、96バイトの構造体、のつもり <StructLayout(LayoutKind.Sequential)> Structure PersonDB <VBFixedArray(3), MarshalAs(UnmanagedType.ByValArray, SizeConst:=4)> _ Dim Persons() As Person Public Sub Init() ReDim Persons(3) End Sub End Structure ''メモリコピー関数 Declare Sub MemCopy Lib "kernel32" Alias "RtlMoveMemory" _ (ByVal hpvDestAs Integer,ByRef hpvSource As PersonDB, ByVal cbCopy As Integer) Sub Main() Dim DB As PersonDB Dim Ret As Integer Dim Pt As Integer DB.Init() ''ここで適当にDBに対して値代入処理 Pt = マップファイルへのポインタ ''DBの内容をマップファイルに書き込み Call MemCopy(Pt, DB ,Len(DB)) End Sub Call部でマーシャリングできないというエラーが出ます。 構造体の中に構造体配列がない場合はうまくいきます。 某掲示板でも、構造体の中に構造体配列があるとマーシャリングが うまくいかないという発言がありました。 やはり不可能なのでしょうか? 構造体配列をアンマネージDLLに渡す方法をご教授お願いします。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.