编译icu
android本来自带了webkit浏览器,但是要对其进行custom就需要android源代码才行, 但是在没有源码的情况下,那么就需要用到ndk了,比如,我是在xoom上做custom webkit的。
1、虽然ndk提供的库很少,而且没有skia,但是好在有bitmap,这样显示慢了点,没有硬加速,但不是不可能。
2、webkit需要的第三方库,freetype,png,jpeg,sqlite3等虽然android源码中有,但是ndk没有开放,因此所有的第三方库,freetype,png,jpeg,sqlite3,cairo,curl,fontconfig,pixman,iconv等都需要用ndk cross-compile成静态库,然后链接到最终的动态库中。
3、选择iconv是icu太大,而且没有多语言的需求,选择cairo+pixman是skia的移植性不好,而且cairo支持很多种backend。
4、编译第三方库需要用到autoconfig,ndk中有如何生成交叉编译链的文档,然后在configure时使用这个工具链就可以了,但是android用到的是bionic库,因此会有很少的地方需要修改,有些库也不能生成test程序,但是静态库是没问题的。
5、利用ndk生成的交叉工具链,在加上webkit自带的cmake编译系统,生成webkit的动态库是没有问题的,当然是webkit的内核,而且有些平台相关的部分代码需要修改。
6、但是只要是以linux平台为基础,修改还是很容易的,我移植的webkit是先移植到linux平台上,然后移植到android平台上的,所以修改相对少了很多,但是修改大多都在WebCore/platform下,在选择了的平台相关库后,做相应的配置和修改。
7、其次是在WebKit目录,这个主要是支持和使用WebCore,因此在需求不是整个浏览器,而只是正常地显示网页时,还是可以写的比较简单的。
㈡ 用MATLAB和C++2008混合编程,出现MATLAB:I18n:MissingICUData - ICU data not found
你这个错误据说是常见发生在安装过多个版本的matlab的系统上的,你最好用一个纯净系统来弄。还有一个可能就是32位和64位的问题。
只是很奇怪,如果你追求时间空间效率,就纯用C++,C++很多计算的库。要是只是需要调度或者粘合matlab脚本,用脚本语言多好,何苦用C++?
㈢ ubuntu如何编译安装官方php7
.
[email protected]:php/php-src.gitphp-src
$cdphp-src
$./buildconf
$sudoapt--devapache2-devsystemtap-sdt-devopensslpkg-configlibssl-devlibcurl4-openssl-devlibbz2-devlibgdbm-devlibjpeg62libjpeg62-devlibpng12-0libpng12-devlibfreetype6-devlibicu-devlibiodbc2-devlibxslt1-dev
$./configure--prefix=/usr/local/php7/7.0.0--localstatedir=/usr/local/var--sysconfdir=/usr/local/etc/php/7--with-config-file-path=/usr/local/etc/php/7--with-config-file-scan-dir=/usr/local/etc/php/7/conf.d--mandir=/usr/local/php7/7.0.0/share/man--enable-bcmath--enable-calendar--enable-dba--enable-exif--enable-ftp--enable-gd-native-ttf--enable-intl--enable-mbregex--enable-mbstring--enable-shmop--enable-soap--enable-sockets--enable-sysvmsg--enable-sysvsem--enable-sysvshm--enable-wddx--enable-zip--with-freetype-dir=/usr/local/opt/freetype--with-gd--with-gettext=/usr/local/opt/gettext--with-iconv-dir=/usr--with-icu-dir=/usr/local/opt/icu4c--with-jpeg-dir=/usr/local/opt/jpeg--with-kerberos=/usr--with-libedit--with-mhash--with-ndbm=/usr--with-openssl=/usr/local/opt/openssl--with-pdo-odbc=unixODBC,/usr/local/opt/unixodbc--with-png-dir=/usr/local/opt/libpng--with-unixODBC=/usr/local/opt/unixodbc--with-xmlrpc--with-zlib=/usr/local/opt/zlib--with-apxs2=/usr/bin/apxs--libexecdir=/usr/local/php7/7.0.0/libexec--with-bz2=/usr--disable-debug--enable-fpm--with-fpm-user=_www--with-fpm-group=_www--with-curl--with-xsl=/usr--with-ldap--with-ldap-sasl=/usr--with-mysql-sock=/tmp/mysql.sock--with-mysqli=mysqlnd--with-pdo-mysql=mysqlnd--disable-opcache--enable-pcntl--enable-dtrace--disable-phpdbg--enable-zend-signals
$make
$sudomakeinstall
$php-v
㈣ 如何编译boost linux
linux平台下要编译安装除gcc和gcc-c++之外,还需要两个开发库:bzip2-devel 和python-devel,因此在安装前应该先保证这两个库已经安装:
#yum install gcc gcc-c++ bzip2 bzip2-devel bzip2-libs python-devel -y
然后是去官网下载源码包,按照如下步骤:
#tar xvzf boost_1_50_0.tar.gz
进入boost_1_50_0目录:
#cd boost_1_50_0
然后是编译安装,boost源码包中有配置脚本,直接用就可以:
#sh ./bootstrap.sh
Building Boost.Build engine with toolset gcc... tools/build/v2/engine/bin.linuxx86_64/b2
Detecting Python version... 2.6
Detecting Python root... /usr
Unicode/ICU support for Boost.Regex?... not found.
Generating Boost.Build configuration in project-config.jam...
Bootstrapping is done. To build, run:
./b2
To adjust configuration, edit 'project-config.jam'.
Further information:
- Command line help:
./b2 --help
- Getting started guide:
http://www.boost.org/more/getting_started/unix-variants.html
- Boost.Build documentation:
http://www.boost.org/boost-build2/doc/html/index.html
接下来就是编译,重点关注是否编译成功:
#./b2
㈤ 怎样重新安装icui40.dll
【首先给出99%情况下都能解决这个问题的最简单办法】:下载并安装微软VC++2005版运行库(英文全称:MicrosoftVisualC++2005RedistributablePackage) 出现丢失msvc类dll提示的本质原因是这个程序是用VC++编译的,要运行此类程序电脑上就必须先安装它所需要的VC++运行库,VC++运行库主要有200520082010201220132015这6个年份的版本,每个年份版本还分为32位版和64位版,各个版本之间互相独立,比如某程序需要2008版VC++,那你安装的是最新的2015版就没有什么用。比如某程序需要的是32位版的VC++2015,你安装的是64位版的VC++2015,也没有用。 【注意】:如果是32位程序出现这个丢失的提示就安装32位(x86)版VC++,64位程序就安装x64版。实在分不清就两个版本都装了,也没坏处。 重申:安装哪个版本跟你的系统是否64位版并没有关系!是要看调用VC++的那个程序本身是32位还是64位! 关于附件:VC++运行库修复工具是很容易搜到下载的,也可以直接下载我附件(上传附件仅仅是为了下载方便,也可以直接搜索下载),附件免费下载,不要积分。 7z、rar、zip文件要用解压缩软件打开,x86版就是32位版,请不要再问出“为什么只有86位版”之类搞笑的问题。 密码:2xur 【下面给出吐槽和解释,不想看的可以不看】:呵呵,vc++已经更新到了2015版,msvcp类文件的版本号刷到了140,而大部分解决方案还在用不知道哪个年代就开始祖传的复制货,又是95又是Me的,特么现在还有人用Windows95系统?敢不敢复制粘贴之前自己试一试?敢不敢修改一下把祖传了十年的答案加上Windows8.1、Windows10?在此强烈建议大家抵制不论什么dll都只会下载这个文件丢到系统盘,然后打开cmd用regsvr命令注册的蠢办法,这完全是撞大运。有些人试了下上面的办法可能觉得有用,认为我危言耸听。那只是你运气好,瞎猫碰到死耗子。如果64位系统按照他的说法去把dll文件放到syswow64里,而你要打开的软件或游戏却是个32位程序,你看看是不是有用。即使版本对应,你光下载这个dll也未必有效,因为你并没有安装vc++运行库,有些软件是必须完整安装VC++运行库才能运行的。这还仅仅是vc++的dll的情况,有些dll,例如steam_api.dll这特么就是某些游戏的免steam破解补丁的文件,是应该放在游戏目录下的,有些逗比也告诉别人下载这个dll放到system32。在它们(就是它们,我没打错)眼里,所有dll都是可以下载放到system32或syswow64注册解决的。这群类人生物真是人类进步的滑梯。 至于回答重装系统的,那就更加呵呵了。除非是被人修改过的系统镜像,否则微软任何原版系统都不自带VC++运行库,重装一万遍也不可能解决msvcp类dll的丢失问题。因为“丢失”其实并不是丢失,是原本就没有!另:msvcp、msvcr、vcomp140.dll属于VC++2015版msvcp、msvcr、vcomp120.dll属于VC++2013版msvcp、msvcr、vcomp110.dll属于VC++2012版msvcp、msvcr、vcomp100.dll属于VC++2010版msvcp、msvcr、vcomp90.dll属于VC++2008版msvcp、msvcr60、71和80.dll,以及vcomp.dll(不带数字版本号)属于VC++2005版除了丢失、缺少这类错误之外,如果一个程序打开之后提示“并行配置错误”,那么也是因为没有安装VC++运行库。 出现这种情况,而你又不知道应该安装哪个版本,一个个试起来又觉得太麻烦的话,建议使用DLL修复工具,这个工具是会在检测修复DirectX的同时顺便安装所有版本的VC++运行库的,也能解决msvcp之类的丢失问题。注意,必须是增强版,其他版没有VC++。
㈥ libicui18n.so makefile中怎么链接QT的动态库
一般分为动态库和静态库,方法分别如下: 一. 静态库的生成 1. 测试目录: lib 2. 源码文件名: mywindow.h, mywindow.cpp 3. 编写项目文件: mywindow.pro 注意两点: TEMPLATE = lib CONFIG += staticlib 4. 生成Makefile: qmake mywindow.pro 5. 编译生成静态库libmywindow.a make 二. 静态库的使用 1. 测试目录: test 2. 将mywindow.h与libmywindow.a拷贝至test目录下 3. 编写main.cpp, 包含头文件mywindow.h, 并调用MyWindow类 4. 编写项目文件: test.pro 注意加上库路径与库文件名: LIBS += -L ./ -lmywindow 5. 生成Makefile: qmake test.pro 6. 编译: make 7. 运行: ./test 三. 动态库的生成 动态库编译基本和静态库类似,需要将上述将要进行编译的项目文件.pro中下面这行去掉 CONFIG += staticlib 按上述操作编译完后就可以得到以lib开头并且.so* 结尾动态库文件,一般有多个。
㈦ 如何编译安装PHP扩展
一开始安装PHP的时候,我们并不知道需要哪些扩展,所以只有等到我们真正用到的时候才想办法去安装。
安装PHP扩展最简单的办法就是
sudo apt-get install php5-xxx
但有的时候并非我们所愿,源里面并没有我们需要的扩展,这时候就需要我们下载源码自己编译安装了。
这篇文章中我将介绍在本地Linux平台下编译安装PHP扩展的方法。
现在网站根目录下创建 index.php 打印基本的配置信息,以验证我们是否安装成功。
配置编译环境
我们需要安装一些编译必须的库,还有 php-dev 版本
Ubuntu
sudo apt-get install php5-dev php5-mysql gcc libpcre3-dev
Fedora
sudo yum install php-devel php-mysqlnd gcc libtool
RHEL
sudo yum install php-devel php-mysql gcc libtool
Suse
yast2 -i php5-pear php5-devel php5-mysql gcc
安装扩展
PHP有两种可供安装的扩展:一种是PHP原生的但是默认没有安装的,另一种的第三方开发的扩展。
下面依次介绍两种扩展的安装方法:
安装之前我们需要一份和当前机器上相同版本的PHP源码
cd code
wget http://cn2.php.net/distributions/php-5.5.9.tar.bz2
tar xvjf php-5.5.9.tar.bz2
cd php-5.5.9
前往此处 下载相应的源码包。
在 /ext 目录下面可以看到所有PHP原生的扩展。
安装原生扩展
以 PHP-intl 为例,这是PHP国际化的扩展。
为了安装这个扩展我们需要先安装ICU 库
sudo apt-get install icu-devtools icu-doc libicu-dev libicu52 libicu52-dbg
ICU 安装成功之后进入/ext/intl 目录:
cd intl
phpize
./configure --enable-intl
make
sudo make install
下面解释一下上面的每个命令:
phpize : 是用来扩展php扩展模块的,通过phpize可以建立php的外挂模块
./configure --enable-intl: 配置编译环境,相当于告诉编译器编译PHP源码的时候加上intl这个扩展。
make: 将会把源码编译成 intl.so
make install : 将会把 intl.so 移动到当前安装的 PHP 的扩展目录。
接下来我们要做的就是在php.ini中启用这个扩展,这一步将会在最后给出示例。
安装第三方扩展
将以这个 扩展为例,这个扩展主要实现了PHP识别条形码的功能。
先安装必要的依赖
sudo apt-get install pkg-config
git clone https://github.com/mongodb/mongo-php-driver
cd mongo-php-driver
phpize
./configure
make
sudo make install
将会生成一个文件,将其拷贝到PHP的扩展目录下面。
启用扩展
在php.ini中启用扩展的方式有很多:
直接在php.ini文件中添加 extension=mongo.so,这是最简单直接的方法。
也可以单独建一个ini文件,然后在php.ini中包含这些文件就可以了。
下面介绍一下第二种方法:
cd `/etc/php5/mods-available`
这个目录里可以放新建的ini文件,然后执行
sudo touch mongo.ini
echo "extension=mongo.so" | sudo tee -a mongo.ini
sudo touch intl.ini
echo "extension=intl.so" | sudo tee -a intl.ini
上面的命令将会创建ini文件,并且写如相应的配置信息。
然后执行下面的命令启用扩展即可(需要安装 php5enmod 工具):
sudo php5enmod mongo
sudo php5enmod intl
如果未安装 php5enmod 工具,则需要手动配置:
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/cli/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/cli/conf.d/intl.ini
ln -s /etc/php5/mods-available/mongo.ini /etc/php5/fpm/conf.d/mongo.ini
ln -s /etc/php5/mods-available/intl.ini /etc/php5/fpm/conf.d/intl.ini
最后在执行一下重启操作就可以了:
sudo service nginx restart
sudo service php5-fpm restart
㈧ android 怎么使用icu
如果只是测试修改后效果,执行步骤A即可;如果需要build后生效,则需要执行全部步骤
A. 在临时目录中编译ICU资源
1. 在external/icu4c下新建临时目录icubuild,进入icubuild目录
$mkdir external/icu4c/icuBuild
$cd external/icu4c/icuBuild
2. 执行icuConfigureRun Linux命令,生成make文件
$.././runConfigureICU Linux
3. 执行make -j2命令,
$make -j2
对于GB版本,如果make -j2出错,需要用mtk提供的文件(Android 2.3 make-j2 ERROE.rar)替换(需要备份原文件)。
4. 将生成的external/icu4c/icuBuild/data/out/tmp/icudt44l.dat push到手机测试
$adb remount
$adb push external/icu4c/icuBuild/data/out/tmp/icudt44l.dat system/usr/icu/
$adb reboot
ICS对应的是icudt46l.dat,
JB以及以后版本是icudt48l.dat
B. COPY所需文件
1、将第一步生成的externalicu4cicubuilddataout mpicudt44l.dat复制到externalicu4cstubdata下并改名为icudt44l-all.dat,覆盖原来的同名文件。
2、对于GB版本,从ICS工程上拷贝路径prebuildlinux-x86icu-4.4文件夹,放到相应的路径下
ICS版本是icudt46l.dat和icudt46l-all.dat
JB及以上是icudt48l.dat和icudt48l-all.dat
C. 配置环境变量
重新配置环境变量(如果不配置正确会导致执行脚本出错)。以我的系统为例,配置过程如下:
1. 在终端中进入/proj/mtk71491/Desktop/GB/alps目录即:
$cd /proj/mtk71491/Desktop/GB/alps
2. 然后执行脚本(等价于./ build/envsetup.sh):
$source build/envsetup.sh
3. 配置环境变量(注意“=”前后不要有空格)。
$export ANDROID_EABI_TOOLCHAIN=/proj/mtk71491/Desktop/GB/alps/prebuilt/linux-x86/toolchain/arm-eabi-4.4.3/bin/(JB2以及以上不执行此步骤)
$export LD_LIBRARY_PATH=/proj/mtk71491/Desktop/GB/alps/prebuilt/linux-x86/icu-4.4/(JB以及上以跳过这一步)
$export ANDROID_BUILD_TOP=/proj/mtk71491/Desktop/GB/alps/
执行完没有任何提示说明配置成功。
D. 执行脚本,重新生成.dat文件
执行脚本,如果遇到文档印尼语错误请用MTK提供的脚本(icu_dat_generator.rar)替换后再执行,如下所示:
1. 进入/proj/mtk71491/Desktop/GB/alps/external/icu4c/studdata目录
$cd external/icu4c/studdata
2. 执行脚本
$./icu_dat_generator.py 4.4 (ICS及以后版本执行$./icu_dat_generator.py)
如果该脚本执行成功,则会更新一遍stubdata下的icudt44l-**.dat这些文件,如果看到这些文件的修改时间变成了最新的时间,就说明已经重新生成真正最后起 作用的是icudt44l-large.dat这个文件。
ICS版是icudt46l-default.dat
JB以及以上是icudt48l-default.dat
E. 重新编译工程
一般修改后都是重新编译工程来测试效果,使用remake android命令即可.
F. 如果执行./icu_dat_generator.py报以下错误
Traceback (most recent call last):
File ./icu_dat_generator.py, line 296, in
main()
File ./icu_dat_generator.py, line 261, in main
icu_version = re.sub(r([^0-9]), , os.path.basename(input_files[0]))
IndexError: list index out of range
可能是环境变量没有配置好,请使用绝对路径,而不是相对路径。
㈨ ICU(International Component for Unicode)有什么作用
International Component for Unicode (以下简称 ICU)
是一套稳定成熟、功能强大、轻便易用和跨平台支持Unicode 的开发包,使得开发人员在 C/C++ 和 Java
上开发全球化软件产品更容易,ICU 是由 IBM 发布和维护,并且是开放源代码的。
ICU
可以根据客户端的语言环境给客户返回最接近语言的字符串,也就是说客户端可能与服务器端的语言环境不一致,不能只根据服务器端的语言来返回字符串。而且将
来单独增加或维护资源文件,不需要重新生成可执行文件或动态链接库。为了提高重用性,最好将所有资源信息统一管理,不是每个模块各自维护管理。如下图1所
示:
http://www.ibm.com/developerworks/cn/opensource/os-mfc2icu/index.html
而 Microsoft Foundation Class(以下简称
MFC)是资源和程序模块合在一起的,即每个模块下都有多个资源文件路径,如 neutral、en-US、ja-JP 和 zh-CN
等,它们分别代表与语言无关不需要翻译的、英文、日文和简体中文等资源信息,每个资源路径下都有个扩展名是 .RC
的文件,里边存放的是相应语言每个标识(ID)对应的字符串。每次编译都是将所有的语言字符串和源代码一起生成看执行文件或动态链接库。当运行时只能根据
所在系统的语言环境返回相应的字符串。如下图2所示:
图2:MFC 资源管理框架示意图
由此可见,ICU 更灵活,可以支持不同语言之间的交流,而且维护更容易,再增加额外的语言也方便,几乎不用修改源代码,并且 ICU 是跨平台的,不仅仅可以用在 Windows 上,也可以用在 Linux、AIX、Solaris 和 HP-UX 等系统上。
要用 ICU 资源架构升级已有 MFC 资源架构,主要考虑两个方面:一是要提取各个模块下所有的字符串信息到 ICU
的资源文件;再就是要更新源程序中调用资源的接口(API),在 MFC 资源管理架构中,用的是的 LoadString
函数去读取相应语言的字符串,我们可以用 ICU4C 的 getStringEx 或 getStringByKey 函数替代
LoadString。
对不同的语言环境(Locale),ICU 可根据不同的 Locale 参数自动使用最恰当的资源包(Resource Bundle)。
ICU 还支持回退(Fallback)机制,尽可能返回用户最接近的语言,例如在简体中文环境下,按优先级依次查找
gb18030.res、_gb18030.res、zh_Hans_CN.res、_zhHans_CN.res、zh_Hans.res、
_zhHans.res、zh.res、root.res 和 _root.res 资源包文件,root 是根资源,一般就将英文资源作为根资源。
回页首
2 用 ICU 实现对 MFC 资源架构的升级
2.1 对原有 MFC 资源架构中资源信息的提取
MFC 资源模块有特定格式的资源文件,例如有个模块 zh-CN 目录下 rational.rc 文件内容如下:
//Microsoft Developer Studio generated resource script.
//
#include "..\resource.h"
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
#ifdef _WIN32
LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
#pragma code_page(936)
#endif //_WIN32
/////////////////////////////////////////////////////////////////////////////
//
// String Table
//
STRINGTABLE DISCARDABLE
BEGIN
IDS_EXCEPTION "发生异常。\n"
IDS_ERR_FAILURE "登录失败:"%_ARG_%"\n"
END
该资源对应的语言可以根据目录获得,ICU 只需要 STRINGTABLE 部分就可,即所有以 STRINGTABLE DISCARDABLE BEGIN开始,以 END 结束部分是我们需要提取的,每个标识(ID)的值在 ..\resource.h 中已定义,如:
//{{NO_DEPENDENCIES}}
// Microsoft Developer Studio generated include file.
// Used by rational.rc
//
#define IDS_ EXCEPTION 18001
#define IDS_ERR_FAILURE 18002
可以开发出一个自动脚本去提取所有模块下的标识(ID)和字符串到一个以 UTF-8 编码的 ICU 格式的资源文件,例如简体中文资源结果如下:
zh:table {
// String resources from rational/resource.h
// Message id range: 18001 18002
// IDS_EXCEPTION
18001:string { "发生异常。\n" }
// IDS_ERR_FAILURE
18002:string { "登录失败:"%_ARG_%"\n" }
}
还要考虑到 ICU 的回退(Fallback)机制,将英文的定义为根(root)资源比较好,这样英文的 ICU 资源文件就以 root:table { 开头。
再用 ICU 的资源生成工具 genrb 将不同语言提取出来的文本文件转换成 ICU 可读的二进制资源文件,如:
genrb -e utf-8 -p rational -k rational_zh.txt
这样做成功之后,这些提取出来的资源就可以被 ICU 接口函数调用了。每种语言对应一个资源包,将来要想维护或增加新的语言包,就用类似的方法,不需要重编译核心模块代码了。
2.2 从 MFC资源架构到 ICU 资源架构接口的转换
有了上面提取出来的 ICU 资源包之后,接下来就是让源程序中使用 MFC LoadString 函数的都用 ICU
资源读取函数了,可能会有很多处 LoadString,可以用 C++ 宏(Macro)编译预处理这个简便的方法,来达到替换所有的
LoadString。然后我们可以开发出新的利用 ICU 获得资源的函数 ICULoadString(int uID, CString
value) 如下:
#include "unicode/ures.h"
BOOL ICULoadString(int uID, CString value)
{
UErrorCode err = U_ZERO_ERROR;
int32_t len;
char uID[8];
// ICU 根据客户端的语言环境打开相应的资源包
UResourceBundle *urb = ures_open(getResPath(), getUserDesiredLocale(), &err);
if (U_FAILURE(err)) {
return FALSE;
}
// 用 ICU 函数获取该标识对应客户端语言环境的字符串
sprintf(uID, "%d", ID); // Convert the integer ID to a decimal string
value = CString(ures_getStringByKey(urb, uID, &len, &err));
if (U_FAILURE(err) || value.IsEmpty()) {
ures_close(urb);
return FALSE;
}
ures_close(urb);
return TRUE;
}
Locale 参数可以在客户端刚连接或会话初始化(Session
initialization)时,就得到客户端的语言环境信息,程序中就可随时通过getUserDesiredLocale()
函数获取该信息,这样就实现了 ICU 根据客户端语言环境返回客户最想得到的语言信息。
回页首
3 总结
使用 ICU
库可以简化我们的工作,更好的满足了我们的全球化产品需求,而且可靠稳定,也利于将来维护和升级。想要增加更多的语言,不需要为此重新编译可执行文件或动
态链接库,只要有相应语言的 ICU资源包即可,而且会使产品的层次化和模块化更好,减小了可执行文件或动态链接库的大小,性能也会更强。
回页首
提示
1). 注意 ICU 在对简体中文和繁体中文使用回退机制的时候都有可能会在使用 root 资源之前会合都去查找 zh 资源,注意避免不恰当的读取。
2). 在 ICU 3.4 以后的版本推荐使用包(Package)代替文件或路径名构造或打开资源包,即先用 genrb 命令编译文本文件到
ICU 资源文件,然后使用 pkgdata 命令再将 ICU 资源文件转成包数据文件,这样在打开资源包之前先使用 udata_setAppData 或 udata_open 装入包数据即可。ICU 自带的示例 ufortune 是一个利用资源包的好样例。
㈩ qt5.2 release版本怎么去除icudt51.dll这几个文件
你直接下载的qt编写的东西,必须带,这是开源协议
当然,要做到也是可以的,如果不是大公司发布软件,或者自己学习,不用买商业版,可以去下qt的源码,然后自己进行静态编译lib库出来,然后就可以直接把文件做成一个exe了,只是很大,我试过,随便写点代码就是六七M