代码之家  ›  专栏  ›  技术社区  ›  the_spectator

在windows中安装Simstring(python)

  •  2
  • the_spectator  · 技术社区  · 7 年前

    我正在尝试通过以下方式在windows中安装simstring python包装器 https://github.com/Georgetown-IR-Lab/simstring . 对于linux,它工作得很好,但对于windows,它在安装时给了我错误。

        D:\Users\source\repos>python setup.py install
        running install
        running build
        running build_py
        running build_ext
        building '_simstring' extension
        C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -I. -IC:\ProgramData\Anaconda3\include -IC:\ProgramData\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt" /EHsc /Tpexport.cpp /Fobuild\temp.win-amd64-3.6\Release\export.obj
        export.cpp
        export.cpp(7): fatal error C1083: Cannot open include file: 'iconv.h': No such file or directory
        error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.12.25827\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
    

    在此之后,我加入了iconv。h在本项目中。但现在它显示出不同的错误。

    running install
    running build
    running build_py
    running build_ext
    building '_simstring' extension
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\bin\HostX86\x64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -I. -IC:\ProgramData\Anaconda3\include -IC:\ProgramData\Anaconda3\include "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\ATLMFC\include" "-IC:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\include" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt" /EHsc /Tpexport.cpp /Fobuild\temp.win-amd64-3.6\Release\export.obj
    export.cpp
    d:\users\aki\source\repos\simstring\cdbpp.h(101): warning C4267: 'initializing': conversion from 'size_t' to 'uint32_t', possible loss of data
    export.cpp(37): error C2664: 'size_t libiconv(libiconv_t,const char **,size_t *,char **,size_t *)': cannot convert argument 2 from 'char **' to 'const char **'
    export.cpp(37): note: Conversion loses qualifiers
    export.cpp(140): note: see reference to function template instantiation 'bool iconv_convert<std::string,std::wstring>(libiconv_t,const source_type &,destination_type &)' being compiled
            with
            [
                source_type=std::string,
                destination_type=std::wstring
            ]
    error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio\\2017\\Community\\VC\\Tools\\MSVC\\14.12.25827\\bin\\HostX86\\x64\\cl.exe' failed with exit status 2
    

    感谢您的帮助或指导。

    3 回复  |  直到 7 年前
        1
  •  2
  •   CristiFati    6 年前

    地面注释 :

    • 我成功地完成了构建过程,但有一点我被卡住了。我创建了 [SO]: Compile error for (char based) STL (stream) containers in Visual Studio (我在这个问题上花了不少时间)。我不知怎的做到了,但还有其他的(类似的?)尝试生成时出错 模拟字符串 ,所以我不得不剥了一些( 尼克斯 基于)代码(未编译)

    • 模拟字符串 已写入 C++ . 什么时候 C++ ( C )代码生成,结果是 体育课 可移植可执行 ( .exe文件 , .动态链接库 ). 检查 [SO]: LNK2005 Error in CLR Windows Form (@CristiFati's answer) 有关如何转换代码的更多详细信息。在处理 .exe文件 这取决于(负载) .动态链接库 s、 有一些限制:

      • 这个 .exe文件 (在这种情况下 蟒蛇exe文件 )的体系结构(32 vs。 64位或( x86 vs。 x64 (或 AMD64 )))必须与任何 .动态链接库 它加载的(和其他 .动态链接库 那是一个 .动态链接库 负载等),所以所有 动态链接库 s,否则 .动态链接库 无法加载

      • 平台( 调试 vs。 释放 )在某些情况下应匹配。如果不这样做,可能会发生以下情况: [SO]: When using fstream in a library I get linker errors in the executable (@CristiFati's answer) ,但我不认为我们处于那种情况

      • 构建工具在某些(其他)情况下也应匹配。示例:
        • 编译器类型( [SO]: Python extensions with C: staticforward (@CristiFati's answer) )
        • 这个 CRT运行时 ( [SO]: Errors when linking to protobuf 3 on MSVC 2013 (@CristiFati's answer) )
        • 这个 CRT运行时 版本 对我们来说很重要。检查 [Python.Wiki]: WindowsCompilers 为了在 蟒蛇 VStudio 版本。请注意,这仅适用于 蟒蛇 下载并安装的版本(如果您构建了 蟒蛇 从源代码来看,那么您应该使用相同的构建工具-但我猜这里不是这样)
          • 我看到你在用 VStudio 2017 ,所以兼容的版本是 Python 3.5 Python 3.6 1. . 我有大约10个 蟒蛇 在我的机器上安装(有些是安装的,有些是我自己构建的-使用不同的编译器;大多数是 x64 ,我也有一些 VEnv公司 s、 但这不会有任何区别)。我还有5个 VStudio 安装的版本,在我的情况下, 设置。py公司 自动选择 VStudio 2015 (但没关系,因为 VStudio 2017 它有编译器 v14.0版 )
      • 模拟字符串 取决于 它本身 这也是 .动态链接库 (实际上还有更多,但我们只关心一个)。检查 .动态链接库 (见下文)带有 Dependency Walker 表明它是 x86 2. . 这意味着:
        • 蟒蛇 32位( x86 )应使用。这是我将要使用的变体。从…起 1. 2. ,我的计算机上唯一可用的版本是 Python 3.6 x86 ( Python 3.5 是我选择的版本,我也有32位格式,但我弄糟了,没有重新安装)
        • 建筑 它本身 从源头上,摆脱限制 2. . 但是,这可能需要时间,而且超出了当前问题的范围。如果有关于建造它的问题,我会花一些时间来尝试一下,因为我喜欢这种任务( [SO]: How to build a DLL version of libjpeg 9b? (@CristiFati's answer) )

    演练 :

    • 创建目录并 cd光盘 到它(应该是空的)。这将是 %ROOT\u目录% ,并且我要使用的所有路径都是相对于它的(当然绝对路径除外),这将是默认的dir(未指定时)
    • 下载 模拟字符串 来源( [GitHub]: Georgetown-IR-Lab/simstring - simstring-master.zip )
    • 解压归档文件-它将在目录中完成 模拟字符串母版 (将自动创建)
    • 创建目录 它本身 . 在其中,下载:
      1. [SourceForge]: gnuwin32/GnuWin - libiconv-1.9.2-1-lib.zip
      2. [SourceForge]: gnuwin32/GnuWin - libiconv-1.9.2-1-bin.zip
      3. 从这些文件中提取所需内容:
        • 从…起 #1. :
          • 包括 目录-用于 编写 阶段
          • lib公司 目录-用于 链接 阶段
          • 这两个阶段都由 设置。py公司 (下文)
        • 从…起 #2. :
          • 箱子 dir-在运行时使用(在使用(导入)模块时)
    • cd光盘 模拟字符串母版 目录。为了构建扩展,我使用 设置。py公司 build\u扩展 命令(由递归调用 安装 -如您的输出所示): [Python 3]: distutils.command.build_ext - Build any extensions in a package
    • 跑步 build\u扩展 ,将产生错误:

      export.cpp(7): fatal error C1083: Cannot open include file: 'iconv.h': No such file or directory
      

      那是因为 蟒蛇 构建系统不知道我们做了什么(在 它本身 目录)。要让它知道,请通过:

      1. -我 ( --包括目录 )-将转换为 [MS.Docs]: /I (Additional include directories)
      2. -L ( --库目录 )-将转换为 [MS.Docs]: /LIBPATH (Additional Libpath)
      3. -l ( --图书馆 )-将转换为 [MS.Docs]: LINK Input Files


      标志( python setup.py build_ext --help 将显示所有)。现在,不要通过 #2. #3. 因为我们无法到达 链接 阶段(如需要):

      (py36x86_test) E:\Work\Dev\StackOverflow\q048528041\simstring-master>"e:\Work\Dev\VEnvs\py36x86_test\Scripts\python.exe" setup.py build_ext -I"../libiconv/include"
      running build_ext
      building '_simstring' extension
      C:\Install\x86\Microsoft\Visual Studio Community\2015\VC\BIN\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -I. -I../libiconv/include -Ic:\Install\x86\Python\Python\3.6\include -Ic:\Install\x86\Python\Python\3.6\include "-IC:\Install\x86\Microsoft\Visual Studio Community\2015\VC\INCLUDE" "-IC:\Install\x86\Microsoft\Visual Studio Community\2015\VC\ATLMFC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt" /EHsc /Tpexport.cpp /Fobuild\temp.win32-3.6\Release\export.obj
      export.cpp
      export.cpp(112): warning C4297: 'writer::~writer': function assumed not to throw an exception but does
      export.cpp(112): note: destructor or deallocator has a (possibly implicit) non-throwing exception specification
      export.cpp(126): warning C4297: 'writer::~writer': function assumed not to throw an exception but does
      export.cpp(126): note: destructor or deallocator has a (possibly implicit) non-throwing exception specification
      export.cpp(37): error C2664: 'size_t libiconv(libiconv_t,const char **,size_t *,char **,size_t *)': cannot convert argument 2 from 'char **' to 'const char **'
      export.cpp(37): note: Conversion loses qualifiers
      export.cpp(140): note: see reference to function template instantiation 'bool iconv_convert<std::basic_string<char,std::char_traits<char>,std::allocator<char>>,std::wstring>(libiconv_t,const source_type &,destination_type &)' being compiled
      with
      [
          source_type=std::basic_string<char,std::char_traits<char>,std::allocator<char>>,
          destination_type=std::wstring
      ]
      error: command 'C:\\Install\\x86\\Microsoft\\Visual Studio Community\\2015\\VC\\BIN\\cl.exe' failed with exit status 2
      
    • 要做的事情(发现错误后,只需逐一修复 出口cpp公司 所需更改):

      1. #define ICONV_CONST const ( cl.exe 不会自动强制转换 常量 ness)
      2. #define __SIZEOF_WCHAR_T__ 2 (作为 sizeof(wchar_t) 2. )
      3. 去掉未编译的代码(我在开始时谈到过): STL公司 带的容器 4字节 烧焦 不在上编译 ,希望修复代码,以及何时修复 将支持 烧焦 s、 代码将编译 OOTB ,但我做不到,所以我不得不做任何事情 OSX公司 . 因此, #ifdef __APPLE__ 应替换为 #if defined(__APPLE__) || defined(WIN32) (5次)


      请注意#1。和#2。可以(应该)通过cmdline( -D 标志,但我无法为已定义的标志指定值),或 设置。py公司 (因此,即使需要在许多文件中声明,它们也只定义一次),但我没有花太多时间,所以我直接在源代码中替换它们。


      手动应用更改或保存:

      --- export.cpp.orig 2016-11-30 18:53:32.000000000 +0200
      +++ export.cpp  2018-02-14 13:36:31.317953200 +0200
      @@ -19,9 +19,18 @@
       #endif/*USE_LIBICONV_GNU*/
      
       #ifndef ICONV_CONST
      +#if defined (WIN32)
      +#define ICONV_CONST const
      +#else
       #define ICONV_CONST
      +#endif
       #endif/*ICONV_CONST*/
      
      +#if defined (WIN32)
      +#define __SIZEOF_WCHAR_T__ 2
      +#endif
      +
      +
       template <class source_type, class destination_type>
       bool iconv_convert(iconv_t cd, const source_type& src, destination_type& dst)
       {
      @@ -269,7 +278,7 @@
           iconv_close(bwd);
       }
      
      -#ifdef __APPLE__
      +#if defined(__APPLE__) || defined(WIN32)
       #include <cassert>
       #endif
      
      @@ -283,7 +292,7 @@
               retrieve_thru(dbr, query, this->measure, this->threshold, std::back_inserter(ret));
               break;
           case 2:
      -#ifdef __APPLE__
      +#if defined(__APPLE__) || defined(WIN32)
       #if __SIZEOF_WCHAR_T__ == 2
               retrieve_iconv<wchar_t>(dbr, query, UTF16, this->measure, this->threshold, std::back_inserter(ret));
       #else
      @@ -294,7 +303,7 @@
       #endif
               break;
           case 4:
      -#ifdef __APPLE__
      +#if defined(__APPLE__) || defined(WIN32)
       #if __SIZEOF_WCHAR_T__ == 4
               retrieve_iconv<wchar_t>(dbr, query, UTF32, this->measure, this->threshold, std::back_inserter(ret));
       #else
      @@ -317,7 +326,7 @@
               std::string qstr = query;
               return dbr.check(qstr, translate_measure(this->measure), this->threshold);
           } else if (dbr.char_size() == 2) {
      -#ifdef __APPLE__
      +#if defined(__APPLE__) || defined(WIN32)
       #if __SIZEOF_WCHAR_T__ == 2
               std::basic_string<wchar_t> qstr;
       #else
      @@ -333,7 +342,7 @@
               iconv_close(fwd);
               return dbr.check(qstr, translate_measure(this->measure), this->threshold);
           } else if (dbr.char_size() == 4) {
      -#ifdef __APPLE__
      +#if defined(__APPLE__) || defined(WIN32)
       #if __SIZEOF_WCHAR_T__ == 4
               std::basic_string<wchar_t> qstr;
       #else
      

      simstring\u获胜。差异 . 那是一个 差异 . 看见 [SO]: Run/Debug a Django application's UnitTests from the mouse right click context menu in PyCharm Community Edition? (@CristiFati's answer) ( 修补程序 utrunner公司 第节),了解如何在上应用修补程序 (基本上,每行以 一个“+” 标志进入,每一行以 一个“-” 标志熄灭)。我正在使用 Cygwin公司 , 顺便说一句 .
      我还将此修补程序提交给 [GitHub]: Georgetown-IR-Lab/simstring - Support for Win 今天合并了 ( 180222 ).

      (py36x86_test) E:\Work\Dev\StackOverflow\q048528041\simstring-master>"c:\Install\x64\Cygwin\Cygwin\AllVers\bin\patch.exe" -i "../simstring_win.diff"
      patching file export.cpp
      
      (py36x86_test) E:\Work\Dev\StackOverflow\q048528041\simstring-master>rem Looking at export.cpp content, you'll notice the changes
      
      (py36x86_test) E:\Work\Dev\StackOverflow\q048528041\simstring-master>"e:\Work\Dev\VEnvs\py36x86_test\Scripts\python.exe" setup.py build_ext  -I"../libiconv/include" -L"../libiconv/lib" -llibiconv
      running build_ext
      building '_simstring' extension
      C:\Install\x86\Microsoft\Visual Studio Community\2015\VC\BIN\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -I. -I../libiconv/include -Ic:\Install\x86\Python\Python\3.6\include -Ic:\Install\x86\Python\Python\3.6\include "-IC:\Install\x86\Microsoft\Visual Studio Community\2015\VC\INCLUDE" "-IC:\Install\x86\Microsoft\Visual Studio Community\2015\VC\ATLMFC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt" /EHsc /Tpexport.cpp /Fobuild\temp.win32-3.6\Release\export.obj
      export.cpp
      export.cpp(121): warning C4297: 'writer::~writer': function assumed not to throw an exception but does
      export.cpp(121): note: destructor or deallocator has a (possibly implicit) non-throwing exception specification
      export.cpp(135): warning C4297: 'writer::~writer': function assumed not to throw an exception but does
      export.cpp(135): note: destructor or deallocator has a (possibly implicit) non-throwing exception specification
      C:\Install\x86\Microsoft\Visual Studio Community\2015\VC\BIN\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -I. -I../libiconv/include -Ic:\Install\x86\Python\Python\3.6\include -Ic:\Install\x86\Python\Python\3.6\include "-IC:\Install\x86\Microsoft\Visual Studio Community\2015\VC\INCLUDE" "-IC:\Install\x86\Microsoft\Visual Studio Community\2015\VC\ATLMFC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.16299.0\winrt" /EHsc /Tpexport_wrap.cpp /Fobuild\temp.win32-3.6\Release\export_wrap.obj
      export_wrap.cpp
      C:\Install\x86\Microsoft\Visual Studio Community\2015\VC\BIN\link.exe /nologo /INCREMENTAL:NO /LTCG /DLL /MANIFEST:EMBED,ID=2 /MANIFESTUAC:NO /LIBPATH:c:\Install\x86\Python\Python\3.6\Libs /LIBPATH:../libiconv/lib /LIBPATH:e:\Work\Dev\VEnvs\py36x86_test\libs /LIBPATH:e:\Work\Dev\VEnvs\py36x86_test\PCbuild\win32 "/LIBPATH:C:\Install\x86\Microsoft\Visual Studio Community\2015\VC\LIB" "/LIBPATH:C:\Install\x86\Microsoft\Visual Studio Community\2015\VC\ATLMFC\LIB" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\ucrt\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\lib\um\x86" "/LIBPATH:C:\Program Files (x86)\Windows Kits\10\lib\10.0.16299.0\um\x86" libiconv.lib /EXPORT:PyInit__simstring build\temp.win32-3.6\Release\export.obj build\temp.win32-3.6\Release\export_wrap.obj /OUT:build\lib.win32-3.6\_simstring.cp36-win32.pyd /IMPLIB:build\temp.win32-3.6\Release\_simstring.cp36-win32.lib
         Creating library build\temp.win32-3.6\Release\_simstring.cp36-win32.lib and object build\temp.win32-3.6\Release\_simstring.cp36-win32.exp
      Generating code
      Finished generating code
      
      (py36x86_test) E:\Work\Dev\StackOverflow\q048528041\simstring-master>dir /b "build\lib.win32-3.6"
      _simstring.cp36-win32.pyd
      
    • 最后,它建成了。这个 .pyd公司 只是一个 .动态链接库 . 这就是 依赖项行者 :

      _simstring.pyd

    • 让我们看看是否可以使用它:

      (py36x86_test) E:\Work\Dev\StackOverflow\q048528041\simstring-master>"e:\Work\Dev\VEnvs\py36x86_test\Scripts\python.exe" sample.py
      Traceback (most recent call last):
        File "E:\Work\Dev\StackOverflow\q048528041\simstring-master\simstring.py", line 18, in swig_import_helper
          fp, pathname, description = imp.find_module('_simstring', [dirname(__file__)])
        File "e:\Work\Dev\VEnvs\py36x86_test\lib\imp.py", line 296, in find_module
          raise ImportError(_ERR_MSG.format(name), name=name)
      ImportError: No module named '_simstring'
      
      During handling of the above exception, another exception occurred:
      
      Traceback (most recent call last):
        File "sample.py", line 3, in <module>
          import simstring
        File "E:\Work\Dev\StackOverflow\q048528041\simstring-master\simstring.py", line 28, in <module>
          _simstring = swig_import_helper()
        File "E:\Work\Dev\StackOverflow\q048528041\simstring-master\simstring.py", line 20, in swig_import_helper
          import _simstring
      ModuleNotFoundError: No module named '_simstring'
      

      这是因为导入时 模拟字符串 ,从而导入 _模拟字符串 (the .pyd公司 ), 蟒蛇 没有找到它。要解决此问题,请执行以下操作:

      • 添加 .pyd公司 路径到 %蟒蛇路径%
      • 如图所示 .pyd公司 取决于 libiconv2.dll ,因此 操作系统 必须知道在哪里找它。最简单的方法是将其路径添加到 %路径% ( [MS.Docs]: Dynamic-Link Library Search Order )
      (py36x86_test) E:\Work\Dev\StackOverflow\q048528041\simstring-master>set PYTHONPATH=%PYTHONPATH%;build\lib.win32-3.6
      
      (py36x86_test) E:\Work\Dev\StackOverflow\q048528041\simstring-master>set PATH=%PATH%;..\libiconv\bin
      
      (py36x86_test) E:\Work\Dev\StackOverflow\q048528041\simstring-master>"e:\Work\Dev\VEnvs\py36x86_test\Scripts\python.exe" sample.py
      ('Barack Hussein Obama II',)
      ('James Gordon Brown',)
      ()
      ('Barack Hussein Obama II',)
      

    最终注释 :

    • 模块有一些输出,与上的相同 Lnx公司 ( 乌布图 )(我在哪里也建造了它-在那里我没有遇到任何问题),我不确定它是否 语义上 是否正确
    • 我没有跑 设置。py公司 安装 命令(我不打算),我能想到的一件事可能会出错(虽然我不确定它会出错),就是不复制/包括 libiconv2.dll 进入包装。如果是这样,您可能需要修改 设置。py公司 (更改应较小)
        2
  •  1
  •   burgersmoke    6 年前

    除了我对Cygwin下构建的其他回应外,我还做了一些其他更改,以允许使用Anaconda与Windows无缝构建和安装。事实证明,康达可以很容易地安装iconv。

    这在很大程度上是基于ChristiFati在此线程中添加的工作,此更改旨在简化步骤和潜在的安装。

    此更改当前存在于我自己的fork中。步骤在此处的自述文件中。我还为此提交了一个请求。

    更新:此拉取请求现已纳入乔治敦回购协议,因此您可以获得它herre: https://github.com/Georgetown-IR-Lab/simstring

    作为补充说明,这样做的动机之一是使回购更容易建立: https://github.com/Georgetown-IR-Lab/QuickUMLS

        3
  •  0
  •   burgersmoke    6 年前

    我在Cygwin的领导下建立了回购协议。需要安装libiconv-devel和python3-devel包。

    之后,我又做了一次更改,以确保libiconv可用于Windows构建。我在这里做出了一个承诺:

    https://github.com/burgersmoke/simstring