NDK无法用相对路径处理#include?

时间:2014-06-28 01:03:23

标签: 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份副本。

有什么想法吗?感谢。

1 个答案:

答案 0 :(得分:1)

抱歉,我没有Windows操作系统,但我已经尝试过在MacOS上编写代码,但由于以下原因无效:

string sInput(L"Hello world");

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