error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __thiscall HttpClient::GetMethod(wchar_t const *)" (__imp_?GetMethod@HttpClient@@QAE?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PB_W@Z),该符号在函数 "protected: wchar_t * __thiscall CAXDCtrl::Test(wchar_t const *)" (?Test@CAXDCtrl@@IAEPA_WPB_W@Z) 中被引用1、是用一个MFC的ActiveX工程引用了一个win32的动态库
2、两个工程的编码统一为unicode
3、所需头文件和Lib都正确引用(因为如果是使用HttpClient下的另外一个无参的函数时正常)基于以上3点,错误基本能确定是因为我传入的参数不正确wstring HttpClient::GetMethod( LPCTSTR url )  这个是GetMethod函数的定义
调用如下:
BSTR CAXDCtrl::Test(LPCTSTR str)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    HttpClient hc;
    hc.OpenSession(); //此处正常
    wstring ws = hc.GetMethod(str); //此处报错, 注释掉可成功
    CString strResult = str;    // TODO: 在此添加调度处理程序代码    return strResult.AllocSysString();
}
请高人指点这是什么原因,谢谢

解决方案 »

  1.   

    引用的win32的动态库不是unicode版本的
      

  2.   

    HttpClient是java或者.net的那个类吗? 直接封到dll中给C++用的?还是自己写的?
    wchar_t就是双字节的,应该是UNICODE的原因,改一下 Mt或者MD看看。
      

  3.   

    看着像是字符集问题,把LPCTSTR改为宽字符指针或者多字节字符指针看看行不行
      

  4.   


    我也是才转的C++可能命名不规范,我说一下,都是在C++下做的开发,只是一个工程是win32.dll工程,一个是
    mfc activeX工程, 两个工程所使用的编码统一为unicode
      

  5.   


    LPCTSTR 不是宽字符指针吗?C++的字符串类型太多了,搞不清楚啊
      

  6.   

    在工程里改成多字节就行了,不要用UNICODE字符集
      

  7.   

    也就是新生成工程时,默认的是UNICODE字符集,选择多字节集.也可以随时改,在工程里的属性里,把字符集改成多字节
      

  8.   


    工程必须是unicode字符集的,换成多字节字符集报100多个错……
      

  9.   

    楼主调用WideCharToMultiByte将unicode的str转换成多字节试试
      

  10.   

    的确看来应该是编码问题,你直接填写个url试试,如果可行,然后下个断调试一下str
      

  11.   


    发帖之前就试过了,一样不行,直接编译不通过 Ozn! 求大神啊