我想要个dll用来转换utf8和gbk码,用来给pb调用的,在网上查了以下函数可以,但是不知道在vc中怎样写才能让pb可以调用。
请帮忙告诉我一下写法,如果有这方面的例子也请发一份给我,十分感谢.
邮箱:[email protected] 实现 汉字 GBK(GB2312) 转化为 UTF8 编码
void ConvertUtf8ToGBK(CString& strUtf8) 
    {
        int len=MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, NULL,0);
        unsigned short * wszGBK = new unsigned short[len+1];
        memset(wszGBK, 0, len * 2 + 2);
        MultiByteToWideChar(CP_UTF8, 0, (LPCTSTR)strUtf8, -1, wszGBK, len);        len = WideCharToMultiByte(CP_ACP, 0, wszGBK, -1, NULL, 0, NULL, NULL);
        char *szGBK=new char[len + 1];
        memset(szGBK, 0, len + 1);
        WideCharToMultiByte (CP_ACP, 0, wszGBK, -1, szGBK, len, NULL,NULL);        strUtf8 = szGBK;
        delete[] szGBK;
        delete[] wszGBK;
    }
    void ConvertGBKToUtf8(CString& strGBK)
    {
        int len=MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, NULL,0);
        unsigned short * wszUtf8 = new unsigned short[len+1];
        memset(wszUtf8, 0, len * 2 + 2);
        MultiByteToWideChar(CP_ACP, 0, (LPCTSTR)strGBK, -1, wszUtf8, len);        len = WideCharToMultiByte(CP_UTF8, 0, wszUtf8, -1, NULL, 0, NULL, NULL);
        char *szUtf8=new char[len + 1];
        memset(szUtf8, 0, len + 1);
        WideCharToMultiByte (CP_UTF8, 0, wszUtf8, -1, szUtf8, len, NULL,NULL);        strGBK = szUtf8;
        delete[] szUtf8;
        delete[] wszUtf8;
    } 

解决方案 »

  1.   

    应该这样:
    extern "C" void _stdcall ConvertUtf8ToGBK(char *strUtf8) 
      

  2.   

    CString 其它语言不认识的!
      

  3.   

    知道方法了,谢谢两位用MFC AppWizard自动生成Win32 DLL和MFC AppWizard DLL,启动VC之后,从File | New菜单项,选择New对话框中的Projects标签,选择新项目为MFC AppWizard(dll),输入工程名pbdll,点击OK按钮,弹出图1-1所示对话框,选择DLL类型为:Regular DLL using shared MFC DLL,然后点击Finish按钮。这样,AppWizard将自动创建一个包含基本要素的DLL框架,接着手工添加代码。   打开pbdll.cpp文件,添加如下函数:extern "C" _declspec ( dllexport )
    int PASCAL out_num(int x)
    {
      int y;
      char msg[30];
      y=x > >2;
      sprintf(msg, "计算结果:%o ! ", y);
      ::MessageBox(NULL, msg, "信息", MB_OK);
      return 0;
    }   以上声明了函数out_num(),输入参数为一个整型数,作移位运算后,用对话框将计算结果显示出来。   接着打开pbdll.def文件,在EXPORTS下输入函数说明out_num,文件内容如下:LIBRARY "pbdll"
    DESCRIPTION 'pbdll Windows Dynamic Link Library'EXPORTS
    ; Explicit exports can go here
      out_num @1
       最后编译生成动态链接库pbdll.dll。