【问题标题】:Error creating C header file from Java class containg Android class从包含 Android 类的 Java 类创建 C 头文件时出错
【发布时间】:2012-03-03 10:27:13
【问题描述】:

我正在开发一个 android 应用程序,其中我有一个包含 android.graphics.Bitmap 包的 Java 类

我想使用 javah 创建一个头文件,但出现错误:

Class android.graphics.Bitmap not found

【问题讨论】:

  • 你到底想做什么? C/C++ 对 java 包一无所知。
  • 当我们实际在Android-nDK上工作时,我们的java类需要b转换成一个头文件,我们可以放在我们的jni文件夹中.....希望你知道所有的数据。真正的问题是我们可以从 java 类创建一个头文件,但是如果我们将 android 包放入 dat java 类......它会产生问题
  • 没有。头文件是 C++,java 包是 java.lang.您的 java 类需要通过 jni 调用 C/C++ 方法。这就是 jni 的用途。那么为什么要把你的 java 类放在 C++ 头文件中呢?

标签: android bitmap mupdf


【解决方案1】:

我认为您正在尝试开发一个 openCV 应用程序。

因此,您基本上想调用 openCV 库中的方法,这些方法尚未在 java 中实现,但可以作为本机 C 或 C++ 方法使用。 尽量避免这种情况,因为 jni 调用很昂贵。

#include <jni.h>
#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/features2d/features2d.hpp>
#include <vector>

using namespace std;
using namespace cv;

extern "C" {
JNIEXPORT void JNICALL Java_[your]_[package]_[com]_[class]_[method](JNIEnv* env, jobject thiz, jlong addrGray, jlong addrRgba)
{
//do stuff
}

您现在可以从您的 java 类中调用此方法:

public native void method(long matAddrGr, long matAddrRgba);

【讨论】:

  • 是的...实际上我正在尝试使用 muPdf 库创建自己的 PdfViewer..所以在我们加载本机库的 java 类中..“muPdf”,我们有 android.graphics。位图,必须为 java 类创建“.h”文件
猜你喜欢
  • 2014-10-28
  • 2016-09-28
  • 2022-12-19
  • 1970-01-01
  • 2015-05-17
  • 1970-01-01
  • 2014-01-28
  • 2015-03-19
  • 2021-01-10
相关资源
最近更新 更多