Windows Mobile 6.5 用の C# アプリケーションに C DLL を含めようとしましたが、正しい動作を得ることができませんでした。
私が使用しようとしている機能は次のとおりです(ヘッダーファイルに記載されているとおり):
extern "C" __declspec (dllimport) BOOL Init (wchar_t *data);
data は入出力パラメーターです。
この関数を含めるための私のコードは次のとおりです。
[DllImport(@"ICCardReader.dll")]
public static extern int Init([MarshalAs(UnmanagedType.LPWStr)] ref string data);
これは、実行時に呼び出されたときにコンパイラによって受け入れられますが、この関数の動作は正しくありません (結果は常に false です)。
だから私の質問は、明らかな「私は何か間違ったことをしましたか?」のほかに、次のとおりです: ポインターが含まれている場合に、C# アプリケーションに C DLL を含める方法は?
PSI は、サードパーティ製アプリケーションによって DLL の正確性を検証できました
[編集]
ユーザーの提案のおかげで、Dllimport を次のように変更しました。
public static extern int Init(StringBuilder data);