Android+opencv运行中遇到的问题总结

1.如何解决android的sdk更新的时候出现联网错误:

更改C:\Windows\System32\drivers\etc 下的hosts文件,添加下面的一句话就可以了。

74.125.237.1 dl-ssl.google.com

2.在按照博文http://blog.csdn.net/sjz_iron/article/details/8614070来建立opencv环境中总是出现运行到c语言的时候出现问题。程序崩溃。

结果是我自己的包名与博文的包名不同而我没有更改c++文件中的包名导致的。对比如下(我自己的包名为:package com.example.test2;,博文的包名为:package com.iron.grayprocess2;  )

cpp文件中:上面的为错误的命名,下面没有注释的为正确的命名。


h文件中一样,上面是错误的命名,下面没有注释的为正确的命名


3.今天按照《细说Android 4.0 NDK编程》来做,按照他上面给的第四章的例子来做没有问题:

package com.jia.ndk.hello;

public class hello {
	static {
		System.loadLibrary("helloAnroidNDK");
	}
	public native String sayHelloToNDK();
	public native String test2();
	
}

这样子来写c++程序很好,c++城城的so文件也可以被加载上来,但是自己按照: http://blog.csdn.net/sjz_iron/article/details/8614070的这种写法来加载so就不行:

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
        @Override
        public void onManagerConnected(int status) {
            switch (status) {
                case LoaderCallbackInterface.SUCCESS:
                {
                    Log.i(TAG, "OpenCV loaded successfully");
                    //System.loadLibrary("native_activity");
                    //Intent intent = new Intent(CvNativeActivity.this, android.app.NativeActivity.class);
                    //CvNativeActivity.this.startActivity(intent);
                } break;
                default:
                {
                    super.onManagerConnected(status);
                } break;
            }
        }
    };
同样的代码在我的另外一个工程里就运行的好好的,在这个工程里就不行,最后查到的原因是在我从另外一个工程复制代码的时候,Eclipse还复制了一些其他的东西到了新的工程里面,导致同样的代码却一个能运行,一个不行。

4:javah的使用:

今天第一次使用了javah这个命令,感觉还是很有用的,避免了自己写h文件时候容易抄错的危险。使用的截图如下所示:



(1)是javah的完整路径(当然自己配一下path路径也可以,我自己的path路径太长了,所以没有配直接写全路径)

(2)(3)    -classpath  ../bin/classes  这是确定*.CLASS所在的文件夹

(4) -jni com.example.test4.imageproc 这是class的名字,com.example.test4是包名,imageproc是类名。

然后就可以在jni路径下看到生成的h文件了。

5:  在写c++的函数时候:形参必须写名字,否则会出error,即时不用,也要写上。


你可能感兴趣的:(Android+opencv运行中遇到的问题总结)