|  | 分類:[C#]
 
 
 初めて質問させていただきます。
C言語で書かれた自作のDLLをC#から呼び出すため、
以下のようなプログラムを書きました。
unsafe class Dll
{
   [DllImport("hoge.dll")]
        public static extern int createFile(char* path, char* data);
}
public object foo(string bar, params string[] baz)
{
   object ret = "";
    unsafe
    {
        fixed (char* path = args[0], texts=args[1])
        {
          Dll.createFile(path,texts);
        }
    }
    ret = "Success";
    return ret;
}
DLLの第1引数はファイルパス、第2引数はファイルに書き込む内容です。
これを実行すると、DLLの呼び出し自体は成功しているのですが、
処理結果を見ると、引数の先頭文字しかDLLに渡っておりません。
具体的には、
args[0]に"hogehoge.csv",args[1]に"a,b,c,d"を設定すると、
aという内容のhというファイルが作られる、という現象です。
おそらく基本的なことを理解していないために、おかしなプログラムを
書いているのだと思いますが、この後何を調べてよいのかわからず、
行き詰ってしまいました。
原因や解決策への道しるべなど、ご教示いただけば幸いでごさいます。
何卒よろしくお願いいたします。
[環境]
Windows XP,Visual Studio 2008(C++/C#),.NET Framework 3.5
 |