OpenCV Android-不满意的链接错误

时间:2014-08-08 03:10:05

标签: java android opencv mobile

所以我有一个使用OpenCV的Android应用程序。我一直试着跑,但是我得到了不满意的链接错误。

以下是代码:

package com.example.hairsimulator;

import java.io.IOException;
import java.io.InputStream;
import java.util.Locale;

import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.Core;

import android.app.Activity;
import android.content.res.AssetManager;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity {
private ImageView view;
private static Activity myActivity;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    myActivity = this;
    System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 
    while (!OpenCVLoader.initDebug()) {
        Log.e("suck","suck");
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME); 
    }
    setContentView(R.layout.activity_main);
    view = (CustView) findViewById(R.id.imageView1);
    AssetManager manager = getAssets();
    Bitmap bitmap;
    // read a Bitmap from Assets
    InputStream open = null;
    try {
      open = manager.open("back.png");
      bitmap = BitmapFactory.decodeStream(open);
      view.setImageBitmap(bitmap);
      ((CustView) view).setBits(bitmap);
    }
    catch (IOException e) {
        e.printStackTrace();
      } 
    finally {
        if (open != null) {
          try {
            open.close();
          } catch (IOException e) {
            e.printStackTrace();
          }
        }
    }
}

public static Activity getActivity() {
    return myActivity;
}

public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
public void startUp(View v) {
    view.setOnTouchListener(new JobListener(true)); 
}
} 

如果我注释掉记录“suck,suck”的代码,那么我会得到一个UnsatisfiedLinkError。我有OpenCV库和其他所有安装。我只是不知道如何解决这个问题。请帮帮我。

1 个答案:

答案 0 :(得分:0)

您可以从分析项目依赖性开始。为此,您可以使用依赖性walker。所以你可以看到出了什么问题。另一个重要的事情是,您必须确保使用正确的架构。如果您使用x64并调用x32或反之,则不可避免的链接错误是不可靠的。我认为你的问题不是程序化的,只有一点配置错误。