none
如何在C#程式中傳字串參數給一個用C寫好的dll RRS feed

  • 問題

  • 大家好:

     

                  小弟現在有一個用C寫好的dm.dll,其中一個函式定義如下:

    bool _stdcall openfile(char* name)
    {
     printf("%s",filename);
     return true;
    }

     

    而在C#中是如此引用的:

    [DllImport("dm.dll", EntryPoint = "openfile")]
      public static extern bool OPENFILE(string buf);

     

    但是當我傳一個字串給參數buf,譬如為OPENFILE("abcdef"),但是從 printf("%s",filename)

    所得到的結果卻只有字元'a',請問小弟哪兒有寫錯嗎?請大家給我一些意見,謝謝!

    2007年6月20日 下午 12:04

解答

  • HI,

     

    C語言的char *是ASCII字元的指標, 而C#的string型態則是Unicode字串, 您必須先將Unicode字串轉換成ASCII字串, 再傳給C語言製作的DLL處理

     

    tihs

    2007年6月21日 上午 08:05