编译静态链接到icu的icu sqlite扩展
我想编译静态链接到的 这就是我尝试过的,也许错误对你来说是显而易见的 > cd icu/source > ./runConfigureIcu Linux --enable-static --with-packaging-format=archive ... > make > cd ../../icu-sqlite > gcc -o libSqliteIcu.so -shared icu.c -I../icu/source/common -I../icu/source/i18n -L ../icu/source/lib -lsicuuc -lsicui18n -lsicudata ... > sqlite3 > .load "libSqliteIcu.so" Undefined symbol utf8_countTrailBytes >cd/icu/来源 >./runConfigureIcu Linux--启用静态--打包格式=存档 ... >制造 >cd.././icu sqlite >gcc-o libSqliteIcu.so-shared icu.c-I../icu/source/common -I../icu/source/i18n-L../icu/source/lib-lsicuuc-lsicu18N-lsicudata ... >sqlite3 >.load“libSqliteIcu.so” 未定义符号utf8\u countTrailBytes 文件夹 icu sqlite扩展 ICU 4.2.1 我的要求编译静态链接到icu的icu sqlite扩展,sqlite,icu,Sqlite,Icu,我想编译静态链接到的 这就是我尝试过的,也许错误对你来说是显而易见的 > cd icu/source > ./runConfigureIcu Linux --enable-static --with-packaging-format=archive ... > make > cd ../../icu-sqlite > gcc -o libSqliteIcu.so -shared icu.c -I../icu/source/common -I../icu/source/i18n -L
- 在Linux和Windows上运行
- 我只需要分发一个文件:
libSqliteIcu.so
g++ -shared --language c -o libSqliteIcu.so icu.c -I../icu/source/common -I../icu/source/i18n -lpthread -lm -L../icu/source/lib -lsicui18n -lsicuuc -lsicudata -lpthread -lm
<>注意库文件的排序,以及使用g++来确保C++运行时被引用,即使我们正在编译C文件。
注意。
我使用了
icu config--prefix=../icu/source--ldflags
的输出,遇到了与您相同的问题。您可以编辑icu\include\utf8.h并替换以下行
#ifdef U_UTF8_IMPL
U_EXPORT const uint8_t
#elif defined(U_STATIC_IMPLEMENTATION) || defined(U_COMMON_IMPLEMENTATION)
U_CFUNC const uint8_t
#else
U_CFUNC U_IMPORT const uint8_t /* U_IMPORT2? */ /*U_IMPORT*/
#endif
utf8_countTrailBytes[256];
#ifdef U_UTF8_IMPL
出口建筑
#elif定义(U_静态_实现)|定义(U_公共_实现)
施工单位
#否则
U_CFUNC U_导入常量8_t/*U_导入2?*//*U_进口*/
#恩迪夫
utf8_countTrailBytes[256];
与
const uint8_t Countrielbytes[256];
这应该可以做到。重要的区别似乎是您使用了g++而不是gcc。我会在windows中试用它,如果它有效的话,我会给你奖金。还没有时间测试它,但是,我给你奖金是因为它适用于Linux。Hi-gs,如果你在windows中成功编译并加载sqlite3中的icu模块,你介意分享你使用的编译器(vc++/mingw,cygwin)和编译它的步骤吗?我可以在linux上编译没有问题,但在windows上仍然没有成功。我也想看看windows的解决方案。有人能提供必要的步骤吗? const uint8_t countTrailBytes[256];