android - NDK 无法处理带有相对路径的#include?

标签 android c++ eclipse android-ndk

我正在使用 Eclipse + NDK (r8d) 在 UI 后面编写一个带有一些 C++ 代码的 Adroid 应用程序。我有一些我认为是万无一失的代码,但编译器只是给我一些奇怪的错误,比如没有具体细节的“无效参数”。这是我的 C++ 代码的样子:

#include <jni.h>
#include <string>
using namespace std;
#include "../../Evaluator.Engine/Evaluator.Engine.h"

Evaluator evaluator;

extern "C" {
    JNIEXPORT jstring JNICALL Java_haskellevaluator_android_MainActivity_evaluateNative(JNIEnv *env, jobject, jstring jInput)
    {
        ...
        string sInput(L"Hello world");
        string sResult = evaluator.evaluate(sInput);
        jstring jResult = env->NewStringUTF(sResult.data());
        return jResult;
    }
}

Evaluator.Engine.h 没什么特别的,只是类 Evaluator 的声明。

#include <string>
using namespace std;

class Evaluator
{
public:
    string evaluate(string input);
};

但是,编译器会报错:

Invalid arguments '
Candidates are:
? evaluate(?)
'

好像字符串没有定义。但是,如果我将头文件的拷贝放在同一个文件夹下,错误就会消失。这是一个 Windows 框。我试过使用\并转义\\作为路径分隔符,但没有用。

这听起来像是 NDK(或它使用的任何预处理器)错误吗?我不想移动头文件,因为它会被其他项目共享。我也讨厌保留同一个文件的 2 个拷贝。

有什么想法吗?谢谢。

最佳答案

抱歉,我没有 Windows 操作系统,但我试过你在 MacOS 上编写代码,但它不起作用,因为:

string sInput(L"Hello world");

说wchar_t不能放在std::string上。有没有可能是同样的问题?

关于android - NDK 无法处理带有相对路径的#include?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24462638/

相关文章:

android - LLDB:添加符号文件?

android - (eclipse 中的 libGDX android)无法实例化 Activity ComponentInfo

c++ - 数组的大小

java - 如何在 Java 中重新打开调试器选项卡

java - 定位 Eclipse 项目的默认根文件夹

java - eclipse 中的 facebook NativeAd 找不到类 'com.facebook.ads.internal.view.hscroll.c' ,从方法 com.facebook.ads.MediaView 引用

android - 尽管调用了 addToBackStack(null),但 Fragment BackStack 不起作用

Android SQLite 查找速度非常慢

c++ - 是什么导致构造函数后出现这些 'unexpected tokens' 错误?

c++ - 使用 QGraphicsScene 平滑动画