具体c dll中的声明为:
extern "C" _declspec(dllexport)  void func(char* type, char* Info, char* addr);
三个入参均为char*c#中调用为:
 [DllImport("ClientDll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]
      //  [DllImport("ClientDll.dll")]
 public static extern void func(string type, string Info, string addr);
我传进去的info中含中文和英文都能正常,包含韩文时dll那边打印出来(16进制码)就是乱码3f;
请高手帮忙解决,点出问题所在。
谢谢!

解决方案 »

  1.   

    应该是编码问题,c#是unicode编码,c++可能不是,你设置一下dllimport中的CharSet试试
      

  2.   

    是编码问题,c++ dll中使用的是多字节字符集,c#中dllimport的CharSet所有设置都试过,dll端收到的韩文始终是3f
      

  3.   

    c dll 里使用什么字符集编码处理函数参数的?
      

  4.   

    开发环境是win2003 datacenter英文版 + vs2010中文版,应该包含韩文字库,能够直接敲韩文
      

  5.   

    c++ dll中使用的是多字节字符集没有人遇到这样的问题吗
      

  6.   

    关于韩文字库,确认了,win2003系统没有,从网上找了字库,安装了,问题依旧
      

  7.   

     [DllImport("ClientDll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.StdCall)]CharSet = CharSet.Auto试试
      

  8.   

    c#中dllimport的CharSet所有设置都试过,dll端收到的韩文始终是3f