在eclipse android ndk项目中没有编译c ++文件

时间:2012-07-15 22:01:06

标签: c++ eclipse android-ndk

我在eclipse中有一个简单的ndk测试项目。我已经安装了所有ndk,jdk,android sdk,cygwin和eclipse cdt。

现在我的android.mk文件指向它编译的main.cpp:

#include "test.h"

int main (int argc, char **argv) {
    test* x = new test();
    x->myTest();
}

但抱怨说:

C:\Development\Android\Test/jni/main.cpp:18: undefined reference to `test::test()'
C:\Development\Android\Test/jni/main.cpp:19: undefined reference to `test::myTest()'

即使我有一个test.cpp的实现,如下所示:

#include "test.h"

test::test() {
    // TODO Auto-generated constructor stub
}

test::~test() {
    // TODO Auto-generated destructor stub
}

int test::myTest() {
    #error "this comes from test"
    return 5;
}

并且test.h文件声明了这样的函数(找到声明,只是从不编译c ++文件):

#ifndef TEST_H_
#define TEST_H_

class test {
public:
    test();
    virtual ~test();
    int myTest();
};

#endif

这是我的Android.mk文件:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := mylib
LOCAL_SRC_FILES := main.cpp

include $(BUILD_SHARED_LIBRARY)

除非我在Android.mk中的本地源文件中指定类test.cpp,否则编译器永远不会看到test.cpp中的#error:

LOCAL_SRC_FILES := main.cpp test.cpp

我有一个包含数千个类的大项目,我需要移植到Android,我无法在那里指定每个文件。为了使编译器正常工作,我可以缺少什么?如何告诉编译器自动使用我的jni文件夹中的所有类?它可能只是Android.mk中的一个线程或设置中的某个位置?

0 个答案:

没有答案