| 分類:[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
|