Recentemente, fiz um projeto para reconhecimento facial na página da web e escrevi um algoritmo de reconhecimento facial em C ++. No entanto, tenho que usar o back -end de Java na página da web, que envolve a questão das DLLs de chamadas de Java. A seguir, é apresentado um exemplo simples do que o editor alcançou procurando informações relevantes.
1. O primeiro passo é criar uma nova classe em java
Conforme mostrado na figura acima, preste atenção ao sistema de frases.LoadLibrary ("javacallcpp");, que é o código para carregar o arquivo DLL. Em seguida, precisamos implementar o método de adição, subtração, multiplicação e divisão definida abaixo na DLL.
2. Compilar o arquivo, o nome do arquivo é java2cpp.java , primeiro compile -o no arquivo de classe. Se você usar o Eclipse, o arquivo foi gerado automaticamente na pasta BIN no diretório do projeto. Compilar com a linha de comando, abra a janela CMD, CD para o diretório em que o arquivo .java está localizado e execute o comando javac java2cpp.java, ou seja, gerar java2cpp.class
Em seguida, execute o comando javah java2cpp para gerar o arquivo de cabeçalho java2cpp.h, mas essa etapa geralmente falha. Outro método pode ter sucesso. Digite o diretório do projeto Eclipse, digite a pasta BIN, execute o comando javah -classpath. -jni pacote name.class Name (com.test.jni.java2cpp) e depois gerar com_test_jni_java2cpp.h
3. Crie um novo projeto Win32 em Vs, Nomeie -o: TestJni, o segundo passo é o seguinte:
4. Copie o arquivo de cabeçalho gerado na segunda etapa na pasta do projeto e, em seguida, importe -o.
5. Implemente o método no arquivo de cabeçalho:
(1) Crie um novo arquivo de cabeçalho Dllapi.h, o código é o seguinte:
#include "com_test_jni_java2cpp.h" int dll_api_add (int a, int b); int dll_api_sub (int a, int b); int dll_api_mul (int a, int b); int dll_api_div (int a, int b);
(2) Crie um novo dllapi.cpp para implementar o método acima, o código é o seguinte:
#include "stdafx.h" #include <iostream> #include "dllapi.h" int dll_api_add (int a, int b) {return (a + b);} int dll_api_sub (int a, int b) {return a - b);} int dll_api_sbi_sub (int a, b) {return a - b);}) Dll_api_div (int a, int b) {return (a / b);} (3) Adicione código ao testJni.cpp para implementar o método com_test_jni_java2cpp.h. Depois de adicionar o código, é o seguinte:
// testjni.cpp: define a função de exportação do aplicativo DLL. /#inclua "stdafx.h" #include "testjni.h" #include "com_test_jni_java2cpp.h" #include "dllapi.h" // Este é um exemplo de exportação de variáveis testjni_api int nTestJni = 0 // This Is ANSXOMENTO OPHENCIMENTO. Testjni_api int fntestjni (void) {return 42;} // Este é o construtor da classe exportada. // Para obter informações sobre definições de classe, consulte testjni.hctestjni :: cTestJni () {return;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1add (jnienv *Env, trabalho, jint, jint. var = dll_api_add (a, b); retornar var;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1sub (jnienv *Env, Job OBJ, Jint A, Jint B) {int var = 0; var = dll_api_sub (a, b); retornar var;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1mul (jnienv *Env, Job OBJ, Jint A, Jint B) {int var = 0; var = dll_api_mul (a, b); retornar var;} jniexport jint jnicall java_com_test_jni_java2cpp_dll_1div (jnienv *Env, job obj, jint a, jint b) {int var = 0; var = dll_api_div (a, b); retornar var;}(4) Gere DLL e você pode encontrar testjni.dll na pasta Debug na pasta do projeto. No entanto, como exigimos que a DLL seja nomeada Javacallcpp em Java, renomeamos o projeto para o JavacallCPP no momento e depois regenerarmos o Javacallcpp. [Esta etapa falhará em gerar, adicione o caminho da seguinte forma]
6 Métodos de chamada
Copie o javacallcpp.dll gerado na etapa 5 na pasta BIN sob o caminho de instalação do JRE e execute o programa Java. Os resultados são os seguintes:
O exposto acima é a descrição completa de como o Java chama a biblioteca C ++ DLL que o editor apresentou a você. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!