教えて! goo のコンテンツに対する取り組みについて

C#初心者です。

C#でstring型のクラスに格納された文字列を、C言語のchar*として

void Func(void* data)

このようなC言語のDLL関数に渡したいのですが、stringからIntPtrを得る方法がわかりません。

どうしたらよいでしょうか。よろしくお願いします。

質問者からの補足コメント

  • string str = "ABC\0\0";
    char[] c = str.ToCharArray();
    IntPtr p = Marshal.AllocHGlobal(c.Length * Marshal.SystemDefaultCharSize);

    Marshal.Copy(c, 0, p, c.Length);
    Func(p);
    Marshal.FreeHGlobal(p);


    これで出来ました

      補足日時:2016/01/22 00:43
gooドクター

A 回答 (1件)

>C#でstring型のクラスに格納された文字列を、C言語のchar*として



http://rokujo.hatenadiary.com/entry/2015/07/21/1 …
そのまま渡せばよろしく処理してくれる…ようです。
試したことはありませんが。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
>>http://rokujo.hatenadiary.com/entry/2015/07/21/1 …
こちらはC言語の引数型がchar*の場合ですよね?

私の場合、C言語の引数型がvoid*なので、
C#のdllimportでは型はIntPtrかvoid*になると思います。

そしてstringからIntPtrかvoid*には自動変換されません。

お礼日時:2016/01/21 23:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング