掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB.NET2003からVC++6.0で作ったAPIを呼ぶ際に、固定長の引数を渡すには? (ID:78894)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Null終端でない文字列を受け渡す場合は、Char配列を利用してください。 ************ 呼び出される側となるC++のヘッダソース ************ // とりあえず今回は、TCHARが _MBCS側でコンパイルされる物とします。 typedef struct userTypeStruct { TCHAR LEVAR[4]; TCHAR CDUSR[5]; } userType; STDAPI_(VOID) ReceivesUserDefinedType(userType FAR *u); ************ 呼び出す側となるVBモジュールのソース ************ Imports System.Runtime.InteropServices Module Module1 Public Declare Auto Sub ReceivesUserDefinedType Lib "..\..\Cpp\Debug\Cpp.dll" _ Alias "ReceivesUserDefinedType" (ByRef bstruct As UserDefinedType) '構造体メンバの最配置を行わない。シングルバイトパッキングを使用。マルチバイト文字セットを使用。 <StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Ansi)> _ Public Structure UserDefinedType <MarshalAs(UnmanagedType.ByValArray, ArraySubType:=UnmanagedType.ByValTStr, SizeConst:=4), VBFixedArray(3)> _ Public LEVER() As Char 'バージョンレベル <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=5)> _ Public CDUSR() As Char '利用者コード Public Sub InitStruct() LEVER = "1000".ToCharArray CDUSR = "ABCDE".ToCharArray End Sub End Structure Sub Main() Dim UDT As UserDefinedType UDT.InitStruct() ReceivesUserDefinedType(UDT) End Sub End Module
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.