初次尝试缺发生异常:org.xvolks.jnative.exceptions.NativeException: Function Decrypted not found
说我的方法没有找到,所以查了一下资料,通过确认,是生成dll文件的时候,方法名给优化了,解决办法:
#ifndef __DES3_H__
#define __DES3_H__
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
#include "string.h"
using namespace std;
#define SUCCESS 0
#define FAIL 1
#define DESENCRY 0
#define DESDECRY 1
#define LIBEXPORT_API extern "C" __declspec(dllexport)
一定要把声明继承C的标准,然后生成的dll文件中的方法名就不会改变,就可以解决上面的异常了。
typedef unsigned char UChar;
static const char *tostring="0123456789ABCDEF";
class Des
{
public:
Des(void);
~Des(void);
public:
UChar* Encrypt(UChar *data, UChar *key,int readlen);
UChar* Decrypted(UChar *data,UChar *key,int readlen);
UChar* Encrypt3(UChar *data, UChar *key,unsigned int n ,unsigned int readlen);
UChar* Decrypted3(UChar *data,UChar *key,unsigned int n ,unsigned int readlen);
UChar* EncryptN(UChar *data, UChar **key, unsigned int n_key,unsigned int readlen);
UChar* DecryptedN(UChar *data, UChar **key, unsigned int n_key,unsigned int readlen);
private:
int handle_data(unsigned int *left , int choice);
int makedata(unsigned int *left ,unsigned int *right ,unsigned int number);
int makefirstkey( unsigned int *keyP );
int makekey( unsigned int *keyleft,unsigned int *keyright ,unsigned int number);
};
LIBEXPORT_API unsigned char* DesEncrypt(unsigned char *data,unsigned char *key,int readlen);
LIBEXPORT_API unsigned char* DesDecrypted(unsigned char * data,unsigned char *key,int readlen);
#endif
分享到:
相关推荐
调用DLL文件的过程通常包括以下几个步骤: 1. **创建DLL**:首先,你需要使用C或C++编写一个DLL文件,其中包含将被Java调用的函数。这些函数需要按照JNI的规范来编写,即使用`JNIEXPORT`和` JNICALL`宏,以及指定...
本教程将通过一个简单的例子来演示如何使用JNI调用DLL动态链接库。 首先,我们需要理解JNI的工作原理。JNI提供了一套接口,使得Java代码可以通过这些接口来调用本地(Native)代码,这里的本地代码可以是C、C++等...
本篇文章将详细介绍如何使用jnative框架在Java中调用DLL动态库,并提供一个简单的示例。 首先,理解jnative框架的核心概念。jnative是一个纯Java库,它提供了一种简单的方式来调用C和C++的函数,无需编写JNI头文件...
### Java通过JNative调用DLL的关键知识点 #### JNative简介 JNative是一个强大的Java库,允许Java应用程序直接调用本地动态链接库(DLL)或共享库。它为开发者提供了一个简单而灵活的方式来集成本地代码与Java环境...
标题中的“jnative调用动态库”指的是Java中使用JNative库来调用本地(操作系统级别的)动态链接库(DLL或SO文件)的技术。在Java中,为了与操作系统底层功能进行交互,比如调用C/C++编译的库,我们可以使用Java ...
以下是使用JNative调用DLL的步骤: 1. **准备DLL文件**:确保你有需要调用的DLL文件,并将其放在Java能够找到的路径下,比如系统的PATH环境变量所包含的目录,或者放在Java类路径下的native库目录。 2. **配置...
Java调用DLL文件是软件开发中的常见需求,尤其是在Java与C/C++混合编程时。`JNative-1.3.2`是一个开源组件,专门设计用于帮助Java应用程序调用Windows平台上的DLL(动态链接库)文件,同时也支持Linux平台下的SO...
通过上述介绍和示例代码可以看出,JNative提供了一种简单而高效的方式来调用DLL文件中的函数。这种方式不仅减少了传统JNI调用所带来的复杂性和潜在问题,而且提高了开发效率。对于需要在Java项目中集成本地系统资源...
`JNative.jar`包含了JNative的实现,`TestJNative.java`是使用JNative调用DLL的示例。 3. **VC++创建DLL**: `CreateDLL.dll`是由Visual C++(VC++)编译生成的动态链接库,通常包含了一些可供其他程序调用的函数...
《JNative调用DLL进行开发详解》 在Java编程中,有时我们需要调用本地系统库(如DLL文件)来执行特定的功能,这时JNative库就显得尤为重要。JNative是Java平台上的一个开源库,它允许Java程序直接调用C/C++编写的...
Java调用DLL的工具JNative是为了解决Java应用程序与本地动态链接库(DLL)交互问题而设计的一个开源组件。在传统的Java开发中,如果需要调用非Java编写的库,比如C或C++编译的DLL,通常会使用JNI(Java Native ...
本示例以"Java调用DLL例子"为主题,使用了JNative库作为接口来实现Java调用本地动态链接库。 JNative是一个开源的Java库,它提供了一种方法使得Java程序能够直接调用C/C++编写的函数,从而间接实现了调用DLL的功能...
本文将详细介绍如何在Java中调用DLL文件,并探讨几种常见的调用方法。 ### Java调用DLL的基本概念 在Java中调用DLL文件主要通过Java Native Interface (JNI)、JAWINJNative和JNA等技术来实现。这些技术允许Java...
`TestJNative.java`很可能是使用JNative调用DLL的示例代码。 `jinvoke.jar`是另一个相关的库,它可能提供了一种更简便的Java本地调用方式,简化了JNI的使用。`TestJInvoke.java`可能展示了如何使用jinvoke来调用`...
使用JNative调用DLL的基本流程: 1. **编写JNI头文件**:使用`javah`工具生成JNI头文件,该文件包含了C/C++函数原型,这些函数将作为Java和本地代码之间的桥梁。 2. **编写本地代码**:根据生成的头文件编写C/C++...
标题"jnative 源码及dll文件"中提到的"jnative"是一个关键术语,这通常是指一个Java Native Interface(JNI)的实现或扩展。JNI是Java平台的一部分,允许Java代码和其他语言写的代码进行交互。这里的"源码"指的是...
1、Labview生成Dll文件 2、Java通过Jnative第三方Jar包调用Labview生成的DLL文件 3、Java在Windows系统调用Labview生成的Dll的说明 有JNative的使用说明 直接下载,根据使用说明可以直接使用。
以下是使用JNative调用DLL的Java代码示例: ```java package com.tvjody; import org.xvolks.jnative.JNative; import org.xvolks.jnative.Type; import org.xvolks.jnative.exceptions.NativeException; public ...
在`Test`类中,我们通过`System.loadLibrary()`或`JNative`构造函数加载DLL,并指定要调用的函数名。在本例中,我们调用的函数名为`AddZhiYe`。 `JNative`提供了设置返回值类型和参数的方法。在调用`setRetVal()`时...
本教程将围绕如何使用`JNative`来调用DLL进行深入讲解。 首先,我们要理解Java和DLL之间的交互原理。Java本身不支持直接调用本地库,但通过JNI(Java Native Interface)可以实现这种跨语言调用。JNI提供了一种方式...