JNI使用---如果我的cpp里边要使用opencv该怎么办呢?

本次需求与问题

我用javah生成.h头文件之后,要生成相应的cpp文件来实现头文件里边定义的方法。看到的很多示例都是在Java工程下边用命令行的方式来生成cpp的dll。
比如说http://blog.csdn.net/jianjian1992/article/details/46724043
那问题就来了,如果只是简单地使用c++来实现,那就在这个cpp里边写就好了,可是如果我要用到其它的库,比如说opencv,那该怎么办呢?在c++工程里边使用opencv可是需要各种配置的呀,现在我在一个java工程目录下,还只有一个cpp,这可肿么办啊!!

一个idea

An idea occurs to me:把这个.cpp和.h都加到一个已经配好的C++工程里边,然后在这个工程里边生成dll,这样可以吗?

实验

首先把.h和.cpp生成好来。

我的java文件如下:
import java.util.ArrayList;

public class MyNative
{
    static
    {
        System.loadLibrary( "face" );
    }
    public native static ArrayList<String> findCircles(String imgUrl, int left, int top, int right, int bottom);

    public static void main(String[] args){
        ArrayList<String> circles = MyNative.findCircles("D:/a.jpg", 1, 10, 30, 50);
        System.out.println(circles.size()); 
        for (int i = 0; i < circles.size(); i++){
            System.out.println(i +" : " + circles.get(i).toString());
        }
    }
}

生成的.h文件如下:
这里写图片描述

然后准备一个C++工程

c_MyNative.h就是生成的头文件
findCircles.cpp则是对它的实现
这里写图片描述
我们来观察一下命令行下生成dll的方式
cl -I c:/"Program Files"/Java/jdk1.6.0_10/include -I c:/"Program Files"/Java/jdk1.6.0_10/include/win32 -LD findCircles.cpp -FefindCircle.dll
里边加入了两个目录,分别是jdk里边的include以及它的子目录win32。
所以我便依葫芦画瓢,也在工程的包含目录里边把这两个目录加进去,如下图蓝框:
opencv等的包含目录也已经加在里边了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值