C#アプリケーションのDLLでC関数のライブラリを使用する必要があります。私はトラブルのcharでDLL関数を呼び出す*引数を抱えています:C#の文字列からC#に文字*を渡す
C DLLは:
extern "C" __declspec(dllexport) int CopyFunc(char *, char *);
int CopyFunc(char *dest, char *src)
{
strcpy(dest, src);
return(strlen(src));
}
C#のアプリはこのような何かを見ている必要があります
[DllImport("dork.dll")]
public static extern int CopyFunc(string dst, string src);
int GetFuncVal(string source, string dest)
{
return(CopyFunc(dest,source));
}
を私は使用しての例を見てきました文字列またはStringBuilder、またはIntPtrをDLL関数プロトタイプで必要とされるchar *の代わりに使用していましたが、それらのいずれかを動作させることができませんでした。私が得る最も一般的な例外は、関数呼び出しがプロトタイプと一致しないため、PInvokeがスタックのアンバランスです。
これには簡単な解決策がありますか?
'のchar *が' 1バイト文字型へのポインタです。 C#文字列はUnicodeです。あなたは最初にそれをまっすぐにする必要があります。 – PaulMcKenzie