Directorio de artículos
Pasos (ideas)
1. Cree una biblioteca de enlaces dinámicos de C++ para encapsular algunas funciones, como dispositivos de escaneo, y utilícela como una biblioteca de terceros 2.
Cree un middleware de C++ (esencialmente también una DLL) para llamar y encapsular aún más bibliotecas de terceros y agregue algunos servicios, lógica, etc.
3. Cree un proyecto Java para llamar a las funciones de la biblioteca de enlaces dinámicos C ++ (biblioteca de terceros)
1. Cree una biblioteca de vínculos dinámicos (DLL) de C++
1.1 Crear una nueva biblioteca de enlaces dinámicos
1. Abra Visual Studio, cree un nuevo proyecto, seleccione la biblioteca de vínculos dinámicos (DLL) y haga clic en Siguiente.
2. Modifique el nombre y la ubicación del proyecto y haga clic en Crear.
1.2 Configurar la biblioteca de enlaces dinámicos
3. Haga clic derecho en el archivo fuente y seleccione Agregar->Nuevo elemento
4. Seleccione la clase C++ denominada WindowsHidUsb y haga clic en Agregar
5. Escriba los archivos pch.h, WindowsHidUsb.h y WindowsHidUsb.cpp
pch.h
#ifndef PCH_H
#define PCH_H
// 添加要在此处预编译的标头
#include "framework.h"
#define API_DLL _declspec(dllexport)
#endif //PCH_H
WindowsHidUsb.h
#pragma once
#include "pch.h"
API_DLL int scanDevice();
WindowsHidUsb.cpp
#include "WindowsHidUsb.h"
#include "pch.h"
API_DLL int scanDevice() {
return 2;
}
6. Haga clic derecho en el proyecto y haga clic en Generar.
2. Cree middleware C ++ (biblioteca de enlaces dinámicos)
2.1 Crear middleware
Los pasos de creación son los mismos que los anteriores. El nombre del proyecto es MtkHidUsbBridge. Agregue un archivo cpp llamado MtkHidUsbBridge.
2.2Configurar middleware
1. Haga clic derecho en el proyecto y haga clic en Propiedades.
2. Directorio VC++ - Incluir directorio - Editar
3. Haga clic en Agregar para agregar include, include\win32 y el directorio del java jdk local
4. Haga clic derecho en el archivo de encabezado y agregue el archivo de encabezado WindowsHidUsb.h escrito antes al archivo de encabezado de la carpeta del proyecto y escriba el archivo MtkHidUsbBridge.cpp y el archivo de encabezado WindowsHidUsb.h
(1) MtkHidUsbBridge.cpp
#include "pch.h"
#include "com_mtk_api_usb_MtkUsbJni.h"
#include "WindowsHidUsb.h"
JNIEXPORT jint JNICALL Java_com_mtk_api_usb_MtkUsbJni_scanDevice
(JNIEnv*, jobject) {
return scanDevice();
}
(2) Archivo de encabezado WindowsHidUsb.h, simplemente reemplace la ruta relativa con su propia ruta relativa
#pragma once
#if defined(WIN32)
#if defined(DEBUG)
#pragma comment(lib,"../../MtkHidUsb/x64/Debug/MtkHidUsb.lib")
#pragma message("完成与MtkHidUsb.lib的连接")
#else
#pragma comment(lib,"../../MtkHidUsb/x64/Release/MtkHidUsb.lib")
#pragma message("完成与MtkHidUsb.dll的连接")
#endif
#endif // defined(WIN32)
int scanDevice();
5. Haga clic derecho en el proyecto y haga clic en Generar. El directorio generado es el siguiente. Recuérdelo primero, se utilizará en el siguiente paso.
3.Java llama a la biblioteca de enlaces dinámicos de C ++ (biblioteca de terceros)
3.1 Crear un nuevo proyecto vacío (omitido)
El proceso de creación es tan sencillo como seguirlo sin cerebro (solo ten manos)
3.2 Configurar proyecto Java
1. En la carpeta com.mtk.api.usb, haga clic derecho para crear una nueva clase MtkUsbJNI.java, de la siguiente manera
package com.mtk.api.usb;//与自己的文件夹结构对应
class MtkUsbJni {
native int scanDevice();
}
2. Abra la ventana de DOS, busque el directorio src del proyecto java, ingrese cmd en la barra de direcciones y presione Entrar, ingrese el siguiente comando
javah -jni -encoding UTF-8 com.mtk.api.usb.MtkUsbJNI
Entre ellos, com.mtk.api.usb.MtkUsbJNI es la ruta real del paquete de la clase MtkUsbJNI en su proyecto Java
3. Agregue el archivo de encabezado com_mtk_api_usb_MtkUsbJni.h generado al directorio del archivo de encabezado de MtkHidUsbBridge y
haga clic con el botón derecho en el archivo de encabezado. - Agregar - Elemento existente - Agréguelo después de encontrarlo y configure el proyecto nuevamente (agregue el directorio de almacenamiento del archivo de encabezado al directorio de inclusión del directorio VC ++) 4. Agregue el MtkHidUsbBridge.dll generado al directorio
raíz del proyecto Java
5. En com.mtk.api En el paquete .usb, cree la siguiente clase MtkUsb
package com.mtk.api.usb;
public class MtkUsb {
private static final MtkUsb mtkUsb = new MtkUsb();
public static MtkUsb getInstance(){
return mtkUsb;
}
private static final MtkUsbJni mtkUsbJni = new MtkUsbJni();
public int scanDevice(){
return mtkUsbJni.scanDevice();
}
}
6. Cree una nueva clase de prueba en el paquete com.mtk.test
package com.mtk.test;
import com.mtk.api.usb.MtkUsb;
public class MtkHidUsbTest {
public static void main(String[] args) {
System.loadLibrary("MtkHidUsb");
System.loadLibrary("MtkHidUsbBridge");
System.out.println("Device Count=" + MtkUsb.getInstance().scanDevice());
}
}
6. Copie las dos bibliotecas de enlaces dinámicos generadas anteriormente, MtkHidUsbBridge.dll y MtkHidUsb.dll al directorio raíz de Java, haga clic derecho y ejecute.