Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
编译静态链接到icu的icu sqlite扩展_Sqlite_Icu - Fatal编程技术网

编译静态链接到icu的icu sqlite扩展

编译静态链接到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

我想编译静态链接到的

这就是我尝试过的,也许错误对你来说是显而易见的

> 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

我的要求
  • 在Linux和Windows上运行
  • 我只需要分发一个文件:
    libSqliteIcu.so
你知道我还能试什么吗

文档

这个命令行在Linux上对我有效:

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];