掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VB.NETからDLLへ引数として構造体を渡す時について (ID:125746)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
環境:WindowsXP 言語:VB.net2003 + VC6 いつも参考にさせて頂いてます。 VB.NETからDLLへ引数として構造体を渡すところで質問させて下さい。 TESTInfoの構造体のstrDirNameに日本語文字を含むファイルパスを入力し、DLLの引数にセットしたところで "埋め込み文字列を Unicode から ANSI に変換できなかったため、型を集成できませんでした。" という、例外エラーが発生します。 日本語を含まないのであれば、問題ないのです。 このような場合、どのようにすれば解決できるかご指導のほどお願い致します。 '#### VB側 #### ' 構造体定義 Public Structure TESTInfo <MarshalAs(UnmanagedType.ByValArray, ArraySubType:=UnmanagedType.ByValTStr, SizeConst:=256), VBFixedArray(255)> _ Public strDirName() As Char 'ディレクトリ名 End Structure ' DLL定義 Public Declare Function SendData Lib "TEST.dll" _ (ByVal stTESTInfo As TESTInfo) As Integer ’DLL呼び出し stTESTInfo.strDirName = CStr("C:\Temp\ファイル格納フォルダ\").PadRight(256, "") SendData(stTESTInfo) '←ここで例外が発生 //#### VC側 #### //構造体定義 typedef struct { char ac_dir_name[256]; /* ディレクトリ名 */ } ArgTESTInfo; //関数定義 int SendData(ArgTESTInfo);
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.