引用
环境:Winxp+VC6.0
过程:编绎生成Dll文件时出错
首先是关于dll文件的生成:
方法如下:
打开VC++6.0,新建->; 工程 ->; win32 Dynamic-Link Library在向导中选择空工程
添加如用javah生成的头文件和自己写的一个cpp文件,然后编译运行,如果没有出现错误,既可以在编译成功的debug文件夹中找到dll文
件,如果出现找不到jni.h的错误,那么用如下方法解决:
fatal error C1083: Cannot open include file: 'jni.h': No such file
or directory
引用
将以下文件:
-
\jdk\include\jni.h
-
-
\jdk\include\win32\jawt_md.h
-
-
\jdk\include\win32\jni_md.h
\jdk\include\jni.h
\jdk\include\win32\jawt_md.h
\jdk\include\win32\jni_md.h
复制到Visual Studio.net的安装目录下的\Vc7\include目录中
如果是VC6.0,自己找相应的目录即可!
分享到:
相关推荐
在描述中提到的`jni.h`和`jni_md.h`是JNI编程中必不可少的头文件。`jni.h`包含了JNI接口的所有定义,如函数原型、数据类型等,是编写本地方法(Native Methods)的核心。开发者在编写C/C++代码来实现Java中的native...
`jni.h`和`jni_md.h`是JNI的头文件,包含了许多在编写本地方法时需要使用的函数原型和数据结构定义。`jni.h`是通用的JNI接口,而`jni_md.h`则包含特定平台的相关信息,如指针大小和调用约定等。在C/C++代码中,需要...
在Visual Studio 2019中,创建一个新的C++项目,将生成的`HelloWorld.h`头文件添加到项目中,并编写对应的C++源文件,例如`HelloWorld.cpp`。实现`printMessage()`方法,如下: ```cpp #include "HelloWorld.h" ...
需要注意的是,在编译过程中可能会遇到找不到`jni.h`或`jni_md.h`的问题,可以通过将这些头文件复制到项目的适当位置来解决。 ##### 5. 加载DLL并调用Native方法 最后一步是在Java程序中加载生成的DLL文件,并调用...
这样做的好处在于,只需要.lib文件即可完成编译,而不需要将DLL文件放在特定的位置。 - **链接.lib文件** 在编译链接时,可以直接链接.lib文件: ```bash gcc main.c MyTest.lib -o output.exe ``` - **确保DLL...
创建一个C/C++源文件,例如`JniDemo.c`,并包含`JniDemo.h`以及jni.h头文件: ```c #include "JniDemo.h" #include <jni.h> JNIEXPORT jint JNICALL Java_JniDemo_callDllFunction (JNIEnv *env, jobject obj, j...
本资源包含的“jni.zip”是一个关于JNI的资料包,内含一本名为“jni.pdf”的书籍,对于学习和理解JNI非常有帮助。 JNI的核心在于提供了一种方式,使得Java应用程序能够调用本地方法(即非Java语言编写的方法),...
这个"jni.rar"压缩包包含了一份关于Java JNI的文档,可以帮助我们深入理解如何在Java程序中调用本地(native)代码。 1. **JNI基础知识**: - JNI接口定义了一组函数,使得Java代码可以调用C/C++函数,反之亦然。...
5. **编译和链接**:将本地方法的C/C++源文件编译为动态链接库(如.so文件在Linux上,.dll文件在Windows上),这一步通常需要指定特定的编译选项,比如链接到Java运行时库。 6. **加载本地库**:在Java代码中,通过...
这个“JNI.zip”文件包含了一份关于JNI编程的全攻略,对于想要学习和理解JNI的开发者来说是一份宝贵的资源。 JNI的核心概念主要包括以下几个方面: 1. **本地方法接口(JNI Interface)**:JNI定义了一组函数,...
确保在配置属性中设置正确的Java SDK路径,以便编译器能找到`jni.h`。同时,你需要添加你的Java项目的`classpath`到系统路径,使C++代码能找到Java的`dll`入口点。 5. **链接第三方DLL**:在C++代码中,你需要使用...
例如,如果开放平台提供了C/C++开发的二进制数据解析服务,且给出了相应的.h头文件,那么在Java中直接调用并解析这些数据可能会相当复杂且效率不高。 #### 解决方案概述 为了解决上述问题,一种常见的策略是请求C++...
2. **生成头文件**:使用`javah`工具(在现代版本的Java中已被`javac -h`替代)从Java类生成JNI头文件,例如`HelloWorld.h`。 3. **实现本地方法**:在C/C++代码中,根据生成的头文件实现本地方法。这个过程通常涉及...
1. 找不到jni.h文件:该问题可以通过将jdk的bin目录和include目录添加到编译环境中来解决。 2. 动态链接库加载失败:该问题可以通过检查动态链接库的路径和名称来解决。 Jni是一种powerful技术,allowing Java程序...
#include <jni.h> /* Header for class JniTest */ #ifndef _Included_JniTest #define _Included_JniTest #ifdef __cplusplus extern "C" { #endif /* * Class: JniTest * Method: callNativeMethod * ...
确保编译时链接到JNI库,并正确设置系统路径以找到Java的库。 6. **加载DLL并调用方法** 在本地代码中,使用`LoadLibrary`(Windows)或`dlopen`(Unix-like系统)加载DLL。然后,使用`GetProcAddress`(Windows)...
#include <jni.h> #include "JniAdd.h" JNIEXPORT jint JNICALL Java_com_example_JniAdd_add(JNIEnv *env, jobject /* this */, jint a, jint b) { return a + b; } ``` 这里的`JNIEXPORT`和`JNICALL`是JNI的宏...
- **JNI头文件生成**:在Java中声明native方法后,使用`javah`命令生成C/C++的头文件,这个头文件定义了Java方法的C/C++接口。 - **本地方法库**:编写C/C++代码实现头文件中的方法,编译为动态链接库(Windows上...
- 编译本地代码:将C/C++源文件编译成动态链接库(如.dll或.so文件)。 - 加载本地库:在Java代码中使用`System.loadLibrary`加载本地库。 - 调用本地方法:Java代码可以调用之前声明的native方法,实际执行的是...
6. **使用Jacob**:在Java项目中使用Jacob时,需要将Jacob的.jar文件添加到项目的类路径中,并根据系统的架构选择合适的.dll文件放置在正确的位置,通常是系统的PATH环境变量所包含的目录下。然后,通过导入Jacob...