Archived

This forum has been archived. Please start a new discussion on GitHub.

Patch #8 for Ice 3.3.0: IcePatch2 and non-ascii file names

dwayne
dwayne St. John's, Newfoundland
The following patch resolves issues with IcePatch2 when it is used with files with non-ascii names, such as chinese characters.

To apply the patch:
cd Ice-3.3.0
patch -p1 < IcePatch2.patch.txt

and then recompile Ice. For Windows the patch utility can be obtained here.

Comments

  • after patch it.

    client.cpp link error.
  • - Compiler :visual studio 2003 sp1
    - Operating system :windows xp sp2
    - Build flags (debug/release) :debug ( release also error)
    - The error message you are getting. :see following

    ps. I manually compiled the third-parties and ice 3.3.0 through visual studio 2003 sp1 successfully. Do you need it?


    D:\Ice-3.3.0-VC71\Ice-3.3.0>patch --binary -p1 < IcePatch2.patch.txt
    patching file cpp/include/IceUtil/StringUtil.h
    patching file cpp/src/IcePatch2/Calc.cpp
    patching file cpp/src/IcePatch2/Client.cpp
    patching file cpp/src/IcePatch2/Util.cpp
    patching file cpp/src/IceUtil/StringUtil.cpp

    D:\Ice-3.3.0-VC71\Ice-3.3.0>cd cpp
    D:\Ice-3.3.0-VC71\Ice-3.3.0>nmake /f Makefile.mak OPTIMIZE=no install
    ...


    "making install in IcePatch2"
    del /q ..\..\include\IcePatch2\FileInfo.h FileInfo.cpp
    ..\..\bin\slice2cpp.exe --ice --include-dir IcePatch2 --dll-export ICE_P
    ATCH2_API -I..\..\..\slice ..\..\..\slice\IcePatch2\FileInfo.ice
    move FileInfo.h ..\..\include\IcePatch2
    del /q ..\..\include\IcePatch2\FileServer.h FileServer.cpp
    ..\..\bin\slice2cpp.exe --ice --include-dir IcePatch2 --dll-export ICE_P
    ATCH2_API -I..\..\..\slice ..\..\..\slice\IcePatch2\FileServer.ice
    move FileServer.h ..\..\include\IcePatch2
    cl.exe /c -I. -I.. -I"C:\Ice-3.3.0-ThirdParty-VC71\include" -nologo -W3
    -WX -GR -EHsc -FD -D_CONSOLE -Zi -Gm -Od -D_DEBUG -MDd -GZ -I..\..\include -DWIN
    32_LEAN_AND_MEAN Util.cpp ClientUtil.cpp FileInfo.cpp FileServer.cpp
    Util.cpp
    FileInfo.cpp
    FileServer.cpp
    code generating...
    compiling...
    ClientUtil.cpp
    code generating......
    link.exe /LIBPATH:"C:\Ice-3.3.0-ThirdParty-VC71\lib" /LIBPATH:"..\..\lib
    " /nologo /FIXED:no /debug /incremental:yes /dll /pdb:..\..\bin\icepatch233d.p
    db Util.obj ClientUtil.obj FileInfo.obj FileServer.obj OS.obj /out:..\..\bin
    \icepatch233d.dll iced.lib iceutild.lib rpcrt4.lib advapi32.lib libbz2d.lib ssl
    eay32.lib libeay32.lib IcePatch2.res
    creating lib ..\..\bin\icepatch233d.lib and object ..\..\bin\icepatch233d.exp
    move ..\..\bin\icepatch233d.lib ..\..\lib\icepatch2d.lib
    cl.exe /c -I. -I.. -I"C:\Ice-3.3.0-ThirdParty-VC71\include" -nologo -W3
    -WX -GR -EHsc -FD -D_CONSOLE -Zi -Gm -Od -D_DEBUG -MDd -GZ -I..\..\include -DWIN
    32_LEAN_AND_MEAN Server.cpp FileServerI.cpp
    Server.cpp
    code generating...
    skipping...(no modify detected)
    FileServerI.cpp
    link.exe /LIBPATH:"C:\Ice-3.3.0-ThirdParty-VC71\lib" /LIBPATH:"..\..\lib
    " /nologo /FIXED:no /debug /incremental:yes /pdb:..\..\bin\icepatch2server.pdb
    setargv.obj Server.obj FileServerI.obj /out:..\..\bin\icepatch2server.exe iced
    .lib iceutild.lib rpcrt4.lib advapi32.lib icepatch2d.lib IcePatch2Server.res
    cl.exe /c -I. -I.. -I"C:\Ice-3.3.0-ThirdParty-VC71\include" -nologo -W3
    -WX -GR -EHsc -FD -D_CONSOLE -Zi -Gm -Od -D_DEBUG -MDd -GZ -I..\..\include -DWIN
    32_LEAN_AND_MEAN Client.cpp
    Client.cpp
    link.exe /LIBPATH:"C:\Ice-3.3.0-ThirdParty-VC71\lib" /LIBPATH:"..\..\lib
    " /nologo /FIXED:no /debug /incremental:yes /pdb:..\..\bin\icepatch2client.pdb
    setargv.obj Client.obj /out:..\..\bin\icepatch2client.exe iced.lib iceutild.lib
    rpcrt4.lib advapi32.lib icepatch2d.lib IcePatch2Client.res
    Client.obj : error LNK2019: undefined external symbol "__declspec(dllimport) class std:
    :basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __
    cdecl IceUtilInternal::toLower(class std::basic_string<char,struct std::char_tra
    its<char>,class std::allocator<char> > const &)" (__imp_?toLower@IceUtilInternal
    @YA?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@ABV23@@Z)
    this symbol in function "public: virtual bool __thiscall TextPatcherFeedback::noFileSummary
    (class std::basic_string<char,struct std::char_traits<char>,class std::allocator
    <char> > const &)" (?noFileSummary@TextPatcherFeedback@@UAE_NABV?$basic_string@D
    U?$char_traits@D@std@@V?$allocator@D@2@@Z) 中被引用
    ..\..\bin\icepatch2client.exe : fatal error LNK1120: 1 Unresolved Externals
    NMAKE : fatal error U1077: “link.exe” : 返回代码“0x460”
    Stop.
    NMAKE : fatal error U1077: “for” : 返回代码“0x1”
    Stop.
    NMAKE : fatal error U1077: “for” : 返回代码“0x1”
    Stop.
  • The error is pretty clear to me. nmake did not remade iceutil.dll and therefore new symbols are not available.

    The easy fix: delete lib\iceutild.lib and bin\iceutild.dll and recompile.
  • fmoya wrote: »
    The easy fix: delete lib\iceutild.lib and bin\iceutild.dll and recompile.

    Does not work!

    I tried it and it does not work!
    I even run "nmake /f Makefile.mak clean" before "nmake /f Makefile.mak OPTIMIZE=no install", errors keep the same as above!
  • fmoya wrote: »
    The error is pretty clear to me. nmake did not remade iceutil.dll and therefore new symbols are not available.

    The easy fix: delete lib\iceutild.lib and bin\iceutild.dll and recompile.

    I found the problem and solved.
    In StringUtil.cpp, you must not put the toLower,toUpper,removeWhitespace functions body in #else segment that make the compilation error under windows xp .

    see attachment