VB用DLLをC#から呼び出す
VB6向けに作られたDLLを呼び出すのは、通常のDLL呼び出しと同じ。
ただし、固定長文字列を含む構造体を引数とするDLLの場合はオプションの指定が必要。
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)]
public struct AuthMemberInfo
{
/// <summary>ユーザーID</summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 9)]
public string userID;
/// <summary>ユーザー名</summary>
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)]
public string userName;
}
fixed char vendor[31]等でも可能だが..
- unsafeだらけになってしまう
- 文字列とchar配列の変換が必要
- 構造体のポインタの記述が必要
など、ひどく面倒になる。
また、文字配列のサイズに注意する。たとえば、VBで30文字の場合、C#では31文字必要になる場合がある。うまくいかない場合は、+1してやってみること。


最近のコメント