|
分類:[VB.NET/VB2005 以降]
メーカーから提供されているDLLに付属のインクルードファイルで
const char* GetName(int index);
と、定義されている文字列型の関数を、VB.Netから呼び出すために、下記の様に定義し
<DllImport("xxxx.dll", EntryPoint:="GetName", SetLastError:=True, CharSet:=CharSet.Ansi, CallingConvention:=CallingConvention.Cdecl)> Public Shared Function GetName() As String End Function
呼び出した所、アプリがクラッシュ(例外コード: 0xc0000374が発生)したり 「'return value' をマーシャリングできません:無効なマネージ/アンマネージ型の組み合わせです。」 のようなエラーが発生します 色々と試して見ましたが、ダメでした。
試したこと ・関数の戻り型を、String, Byte(), IntPtr, StringBuilder などに変えた ・DllImportのCharSetを、Auto, UniCode などに変えた ・DllImport宣言を止めて、Declareで宣言した Declare Function GetName Lib "xxxx.dll" () As <MarshalAsAttribute(UnmanagedType.LPStr)> String
const char*を返すようなDLL関数の呼び出し例をネットで検索して見ましたが 見つけられませんでした。
アドバイスをお願いいたします。
開発環境は、Windows10 Pro(x64) + VS(2019)のVB です。よろしくお願いします。
|