java 调用DLL的问题。。。
来源:互联网 发布:潇潇美容馆淘宝店铺 编辑:程序博客网 时间:2024/06/08 16:52
由于项目的需要,这两天研究了下有关JAVA调用DLL的内容,由于自己的水平还处于初级阶段吧,在网上也找了很多资料但是对于项目一直没什么进展,
我用的是JNI的调用。
第三方给我们提供了调用的方法的文档,包括DLL,相关的Include,lib文件。
如:INFSDK_Net.dll, INFSDK_Net.h,INFSDK_Net.lib等等。。
如方法原型:
INFSDK_API bool STDCALL INFNET_Init()
功能:初始化解码库SDK,调用其他SDK函数的前提
INFSDK_API long STDCALL INFNET_Login(const char *sDevIP,
const unsigned int nDevPort,
const char *sUserName,
const char *sPassword);
功能:用户注册
首先在JAVA中写一个类:
package com.sihan;
public class TestDLL {
public native void INFNET_Init();//初始化
public native void INFNET_Login(String IP,int Port,String UserName,String Password);//登陆的方法
static{
System.loadLibrary("TestDll");
}
}
然后开始编译它,生成.class文件和需要的头文件com_sihan_TestDLL.h。
javac -d . TestDLL.java
javah com.sihan.TestDLL
头文件内容如下:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_sihan_TestDLL */
#ifndef _Included_com_sihan_TestDLL
#define _Included_com_sihan_TestDLL
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: com_sihan_TestDLL
* Method: INFNET_Init
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_com_sihan_TestDLL_INFNET_1Init
(JNIEnv *, jobject);
/*
* Class: com_sihan_TestDLL
* Method: INFNET_Login
* Signature: (Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
*/
JNIEXPORT void JNICALL Java_com_sihan_TestDLL_INFNET_1Login
(JNIEnv *, jobject, jstring, jint, jstring, jstring);
#ifdef __cplusplus
}
#endif
然后启动VC,新建工程,选择win32 Dynamic-link Library 工程名为TestDll,把com_sihan_TestDLL.h加到工程中,
然后新建C++ Source File,生成一个空的TestDll.cpp.
内容如下;
#include <iostream.h>
#include "com_sihan_TestDLL.h"
#include "windows.h"
JNIEXPORT void JNICALL Java_com_sihan_TestDLL_INFNET_1Init
(JNIEnv *env, jobject newTestDLL)
{
//这里的方法不知道怎么写了,;
}
JNIEXPORT void JNICALL Java_com_sihan_TestDLL_INFNET_1Login
(JNIEnv *env, jobject newTestDLL, jstring IP, jint Port, jstring UserName, jstring Password)
{
//这里的方法不知道怎么写了,还有怎么去调用INFSDK_Net.dll,以及文件的转换。;
}
到这里就不知道怎么做了。。。
- java 调用DLL的问题。。。
- java(JNA)调用dll函数的问题
- java调用C++的dll遇到问题
- java 中System.loadLibrary()调用c++Dll的路径问题
- java调用CC++编写的DLL文件问题
- Java使用JNI调用DLL的问题总结
- java 中调用c++Dll的路径问题
- 关于Java调用32/64位dll的问题
- vc的dll调用问题
- 调用dll时的问题
- JAVA调用DLL的注意事项
- Java调用DLL的技术
- java调用C#的dll
- java 调用 C++ 的dll
- JAVA通过JNI调用DLL问题
- DLL的创建和调用的问题
- python调用c++的dll的问题
- VB.NET写的DLL调用问题
- 比较两个数组中不同的数
- POJ3233矩阵快速幂
- VMware Tools的经典安裝方法
- Havok 將物理引擎搬上 Android 2.3 了!
- getOutputStream() has already been called for this response异常的原因和解决方法
- java 调用DLL的问题。。。
- 函数的副作用
- 0702
- C 预处理
- Thunderbird 邮件签名三个实现方式
- C++学习(一)
- 在DirectX3D中使用Havok物理引擎的教程
- memset
- CentOS 5.5 (VE) Server Build - Django 1.3, Python 2.7