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
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:
and then recompile Ice. For Windows the patch utility can be obtained here.
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.
0
Comments
-
after patch it.
client.cpp link error.0 -
- 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?
\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
\Ice-3.3.0-VC71\Ice-3.3.0>cd cpp
\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.0 -
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.0 -
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 attachment0