Can';t编译现有的C++;Android Studio中的源代码

Can';t编译现有的C++;Android Studio中的源代码,android,c++,android-studio,android-ndk,Android,C++,Android Studio,Android Ndk,我想在安卓系统中使用,所以,我遵循,我认为我应该做什么,以使用它是 通过NDK在Android Studio中编译源代码 使用Swig生成Java包装类 所以,我安装了NDK,并遵循和设置了Android Studio进行编译 这是在模块的build.gradle android.ndk { moduleName = "MeCab" stl = "stlport_shared" } 当我编译(生成项目)之后,报告了很多错误,几乎所有的错误都是错误:“xxx”没有被声明和一些错误

我想在安卓系统中使用,所以,我遵循,我认为我应该做什么,以使用它是

  • 通过NDK在Android Studio中编译源代码
  • 使用Swig生成Java包装类
  • 所以,我安装了NDK,并遵循和设置了Android Studio进行编译

    这是在模块的
    build.gradle

    android.ndk {
        moduleName = "MeCab"
        stl = "stlport_shared"
    }
    
    当我编译(生成项目)之后,报告了很多错误,几乎所有的错误都是
    错误:“xxx”没有被声明
    和一些
    错误:。。。类型不完整

    我认为这是因为
    #ifdef HAVE*
    根本不起作用,所以我尝试删除
    #ifdef HAVE*
    并直接包含头文件,然后编译以查看是否修复了错误

    结果是,我直接将
    加入,
    加入,
    加入和
    加入(我可能会忘记一些),并且每个
    错误:“xxx”都没有被声明
    错误:。。。不完整的类型将不会再次显示。
    第一个问题:我是否使用了正确的解决方案来修复它?

    与上述错误一起报告的其他错误为
    错误中,未在此范围内声明:“DIC_版本”

    错误中,未在此范围内声明“包”
    ,并且
    错误:未在此范围内声明“版本”

    错误中,未在此范围内声明“版本”

    并且在
    错误中:“MECAB\u DEFAULT\u RC”未在此范围内声明

    我在中找到了这些变量,在中找到了值为的变量,但我不知道这些文件与源代码中的变量有何关联。
    第二个问题:如何修复这些错误?

    最后一个错误未在Gradle Build消息中报告,但在中用红线下划线

    const T*end()const{return text+size();}
    中的
    size()
    中,所说的
    非常量函数“size()”是从常量函数调用的,我认为这似乎是我们无法从C#中的静态上下文引用实例字段,但在这种情况下,我应该如何修复它?**我认为这不是作者的错误。

    我不知道这是不是一个有用的信息,是吗

    要求
    C++编译器(g++3.4.3或vc7) -iconv(libiconv):用于转换字典
    安装
    它可以按照与通用自由软件相同的步骤安装
    %tar zxfv mecab-X.X.tar.gz

    % cd mecab-X.X
    % ./configure 
    % make
    % make check
    % su
    # make install
    
    字典安装

    % tar zxfv mecab-ipadic-2.7.0-XXXX.tar.gz
    % mecab-ipadic-2.7.0-XXXX
    % ./configure
    % make
    % su
    # make install
    
    如何从

    Unix

    % cc -O2 `mecab-config --cflags` example.c -o example \
         `mecab-config --libs`
    
    Windows
    要编译副本,请包括\mecab.h、bin\libmecab.dll>lib\libmecab.lib
    cygwin/mingw环境

    % gcc -DDLL_IMPORT -I. example.c -o example.exe libmecab.dll
    
    % cl -DDLL_IMPORT -I. example.c libmecab.lib
    
    VC++环境

    % gcc -DDLL_IMPORT -I. example.c -o example.exe libmecab.dll
    
    % cl -DDLL_IMPORT -I. example.c libmecab.lib
    

    我使用的是Windows 10、Android Studio 1.4、NDK r10e

    当然,
    Mmap::size()
    应该声明为
    const
    。如果其他编译器没有标记这一点,那是他们的问题,而不是NDK的问题。@AlexCohn I将
    Mmap::size()
    声明为
    const
    ,现在下划线错误消失了。但是我仍然不明白
    Mmap::size()
    是否应该是常量,作者和其他人如何编译它(不在Android Studio中),尽管我没有尝试在Android Studio之外编译它。有些编译器可能不那么严格,或者足够聪明,可以理解size()不会改变对象,或者他们可以接受一个标志来忽略这类错误