Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android &引用;致命错误:Eigen/Dense:没有这样的文件或目录";/特征库_Android_C++_Eclipse_Android Ndk_Java Native Interface - Fatal编程技术网

Android &引用;致命错误:Eigen/Dense:没有这样的文件或目录";/特征库

Android &引用;致命错误:Eigen/Dense:没有这样的文件或目录";/特征库,android,c++,eclipse,android-ndk,java-native-interface,Android,C++,Eclipse,Android Ndk,Java Native Interface,我在Windows8.1上使用JavaEclipseLuna进行Android编程,同时,我也在使用本机环境(C++)。我试图在我的本机代码中使用Eigen库。我得到了一个“致命错误:Eigen/Dense:没有这样的文件或目录”错误,我不知道背后的原因。这是我的密码: my.java文件: package com.example.androideignv2; import android.support.v7.app.ActionBarActivity; import android.os.

我在Windows8.1上使用JavaEclipseLuna进行Android编程,同时,我也在使用本机环境(C++)。我试图在我的本机代码中使用Eigen库。我得到了一个“致命错误:Eigen/Dense:没有这样的文件或目录”错误,我不知道背后的原因。这是我的密码:

my.java文件:

package com.example.androideignv2;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class AndroidEignV2Activity extends ActionBarActivity {

/** Loading the Native library */
static {
    /** Use either of the following two methods to load the native library*/
    System.loadLibrary("myNativeLibrary");
    //System.load("/data/data/cookbook.chapter2/lib/libNativeRegister.so");
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_android_eign_v2);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.android_eign_v2, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    // Handle action bar item clicks here. The action bar will
    // automatically handle clicks on the Home/Up button, so long
    // as you specify a parent activity in AndroidManifest.xml.
    int id = item.getItemId();
    if (id == R.id.action_settings) {
        return true;
    }
    return super.onOptionsItemSelected(item);
}
}
my.cpp本机库:

#include <jni.h>
#include <android/log.h>
#include <stdio.h>
#include <stdlib.h>

#include <iostream>
#include <Eigen/Dense>


using namespace Eigen;
using namespace std;

int main() // int argc, char* argv[]
{
  MatrixXd m = MatrixXd::Random(3,3);
  m = (m + MatrixXd::Constant(3,3,1.2)) * 50;
  cout << "m =" << endl << m << endl;
  VectorXd v(3);
  v << 1, 2, 3;
  //cout << "m * v =" << endl << m * v << endl;
}
my Application.mk文件:

APP_ABI := all
APP_STL:=stlport_static 
我通过以下操作将Eigen library文件夹包括在“路径和符号”中: Project/Properties/C/C++General/path and Symbols/includes/然后我浏览到我的Eigen库路径


您只在Eclipse路径和符号中添加了Eigen library include文件夹,任何提示都将受到极大的欢迎

从实际NDK构建中引用此库是必须执行的另一个步骤。你的图书馆是如何组织的?它已经为Android编译了吗

您可以从您的Android.mk中引用第三方预构建的NDK库。将出现的
.so
共享
替换为
.a
静态
,如果您拥有的是静态预构建库而不是共享库:

LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := eigen
LOCAL_SRC_FILES := /path/to/eigen/prebuilts/$(TARGET_ARCH_ABI)/libeigen.so
LOCAL_EXPORT_C_INCLUDES := /absolute/path/to/includes
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := myNativeLibrary
LOCAL_SRC_FILES := myNativeLibrary.cpp
LOCAL_SHARED_LIBRARIES := eigen
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_MODULE := eigen
LOCAL_SRC_FILES := /path/to/eigen/prebuilts/$(TARGET_ARCH_ABI)/libeigen.so
LOCAL_EXPORT_C_INCLUDES := /absolute/path/to/includes
include $(PREBUILT_SHARED_LIBRARY)

include $(CLEAR_VARS)
LOCAL_MODULE := myNativeLibrary
LOCAL_SRC_FILES := myNativeLibrary.cpp
LOCAL_SHARED_LIBRARIES := eigen
LOCAL_LDLIBS := -llog
include $(BUILD_SHARED_LIBRARY)