java - 无法打开包含文件 : 'jni.h' : No such file or directory

标签 java c++ qt java-native-interface header-files

我正在尝试使用 voce 的 C++ 版本语音识别API。它是一个用 Java 构建的 API,也支持 C++。但是,每当我尝试执行它时,我都会收到错误

C:\Users\yohan\Documents\Extra C++ Libs\Voice Recognition - Voce API\voce-0.9.1\src\c++\voce.h:34: error: C1083: Cannot open include file: 'jni.h': No such file or directory

这是我的 .pro 内容

#-------------------------------------------------
#
# Project created by QtCreator 2013-04-26T12:59:05
#
#-------------------------------------------------

QT       += core

QT       -= gui

TARGET = Tired
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app


SOURCES += main.cpp

INCLUDEPATH += C:/opencv/build/include
INCLUDEPATH += C:/opencv/build/include/opencv
INCLUDEPATH += C:/Program Files/Java/jdk1.7.0/include/
INCLUDEPATH += C:/Program Files/Java/jdk1.7.0/include/win32

LIBS += C:/opencv/build/x86/vc9/lib/opencv_calib3d240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_contrib240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_core240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_features2d240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_flann240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_highgui240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_imgproc240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_objdetect240.lib
LIBS += C:/opencv/build/x86/vc9/lib/opencv_video240.lib

HEADERS +=

这是Main.cpp

的代码
#include "C:/Users/yohan/Documents/Extra C++ Libs/Voice Recognition - Voce API/voce-0.9.1/src/c++/voce.h"

int main()
{


}

voce.h的一小部分代码如下

#ifndef VOCE_H
#define VOCE_H

// This file contains a C++ interface for Voce's Java functions.  All of 
// the Java methods in Voce's API are instance methods, so we don't need 
// to handle class methods here.  For documentation on the specific 
// functions, refer to the API documentation for the Java source.

#include <jni.h>
#include <iostream>
#include <string>

/// The namespace containing everything in the Voce C++ API.
namespace voce
{
#ifdef WIN32
const std::string pathSeparator = ";";
#else
const std::string pathSeparator = ":";
#endif

    /// Contains things that should only be accessed within Voce.
    namespace internal
    {
        /// Global instance of the JNI environment.
        JNIEnv* gEnv = NULL;

        /// Global instance of the Java virtual machine.
        JavaVM *gJVM = NULL;

//Code Continues..........................................

我怎样才能摆脱这个错误?我正在使用 QT,这是使用 Visual Studio 2010 编译器的最新版本。

最佳答案

您应该引用 INCLUDEPATH 中包含空格的部分。而不是做:

INCLUDEPATH += C:/Program Files/Java/jdk1.7.0/include/
INCLUDEPATH += C:/Program Files/Java/jdk1.7.0/include/win32

你可能应该这样做:

INCLUDEPATH += "C:/Program Files/Java/jdk1.7.0/include/"
INCLUDEPATH += "C:/Program Files/Java/jdk1.7.0/include/win32"

关于java - 无法打开包含文件 : 'jni.h' : No such file or directory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16284857/

相关文章:

java - 适当的模式来跟踪 N 个最近的值

c++ - 在 char 指针的末尾追加一个字符

c++ - 具有小整数有效加法的 Bignum 实现

android - Android 上的 QML - C++ 适用于业务逻辑吗?

java - 有没有办法在通过代理连接时使用aws客户端配置信息配置spring cloud aws

java - 如何将 jconsole 安装/添加到我的 JDK?

qt - 如何将 QLineEdit 默认文本设置为一个空格?

c++ - 如何在没有竞争条件的情况下将 QFutureWatcher 与 QtConcurrent::run() 一起使用

Java 输出 if 和 else?

c++ - 合并多个 STL 容器并删除重复元素的最佳方法?