//invoke.h
#ifndef INVOKE_H_
#define INVOKE_H_
//函数声明
int invokeJava(char* javaClass);
#endif
// InvokeHook.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <wchar.h>
#include <windows.h>
#include <jni.h>
#include <assert.h>
#include "invoke.h "
int invokeJava(char* javaClass)
{
_tprintf(_T("===============!\n"));
JavaVM *vm;
JNIEnv *env;
JavaVMInitArgs args;
JavaVMOption ops[1];
ops[0].optionString = "-Djava.class.path=D:/wrap/tinyserver/bin";
args.version = JNI_VERSION_1_6;
args.options = ops;
args.nOptions =1;
args.ignoreUnrecognized = JNI_TRUE;
jint created = JNI_CreateJavaVM(&vm,(void **)&env,&args);
if (created < 0){
printf("can't create java vm");
return -1;
}
jclass testNative2 = env->FindClass(javaClass);
//jclass testNative2 = env->FindClass("info/lidongbo/TinyServer");
assert(testNative2 != NULL);
jobjectArray main_args = env->NewObjectArray(1, env->FindClass("java/lang/String"),env->NewStringUTF("FromC"));
jmethodID testNative2_main = env->GetStaticMethodID(testNative2,"main","([Ljava/lang/String;)V");
assert(testNative2_main != NULL);
env->CallStaticObjectMethod(testNative2,testNative2_main,main_args);
vm->DestroyJavaVM();
return 0;
}
分享到:
相关推荐
标题 "C++调用java jar包测试代码" 描述了一个跨语言交互的场景,其中C++程序通过调用Java编译后的jar包来执行特定功能。这个过程涉及到多个技术点,包括Java的编译和打包,C++的编程以及两者之间的接口调用。 1. *...
Android Studio项目,此Demo实现Java调用C++函数,然后C++函数回调Java方法、纯C++直接调用Java方法,此为github地址链接
本案例中,我们关注的是"C++调用Java"的实现,这在需要利用C++的性能优化和Java的跨平台特性时非常有用。我们将深入探讨这个主题,包括原理、步骤以及提供的示例文件。 首先,C++调用Java主要依赖于Java Native ...
### c++调用java工程:深入理解JNI技术 在现代软件开发中,多语言混合编程已成为常态,特别是在大型项目中,不同的编程语言被用于解决各自领域的问题,以达到最佳的性能和开发效率。C++与Java,作为两种广泛使用的...
本案例探讨的是如何使用C++调用Java函数,这通常涉及到JNI(Java Native Interface)技术。以下是对这个实战项目的详细解释: 首先,我们要理解标题"实战-C++调用Java函数"所涉及的核心知识点。C++是一种强大的系统...
在AIX操作系统上,使用C++调用Java类(包)是一种常见的跨语言交互技术,主要依赖于Java Native Interface (JNI)。JNI允许Java代码调用本地(非Java)代码,反之亦然,使得C++和Java可以无缝协作。下面我们将深入...
本文将详细讲解在Android Studio 3.0中如何实现C++调用Java以及Java调用C++的过程。 首先,我们需要在Android Studio项目中配置NDK(Native Development Kit),它是Android用于编写和编译C/C++代码的工具集。在...
你可以下载并研究这个项目,以加深对C++调用Java接口的理解。 通过这种方式,C++和Java之间可以实现无缝通信,允许我们充分利用两种语言的优点。这种技术广泛应用于游戏开发、高性能计算、嵌入式系统等领域,使得...
总的来说,C++调用Java WebService接口是一个涉及多种技术的复杂过程,需要对XML、SOAP、WSDL有深入理解,并熟悉所选用的C++ Web服务库。正确地实现这一过程可以使得异构系统的组件能够有效地协同工作。
7. **C++调用Java**: - 通过`JNIEnv`指针,C++可以查找并调用Java对象的方法,访问字段,甚至创建新的Java对象。 8. **构建流程**: - 使用NDK(Native Development Kit)编译C/C++代码,生成.so文件。 - 将.so...
### C++调用Java代码的JNI实现概述 在软件开发领域,经常会出现不同语言之间相互调用的需求。本文将深入探讨如何使用C++通过JNI(Java Native Interface)调用来实现对Java代码的调用,特别关注于用户身份验证与...
"Android中C/C++调用Java代码" Android中C/C++调用Java代码是通过Java Native Interface(JNI)实现的。JNI提供了一种机制,允许Java代码和native代码之间相互调用。下面我们将详细介绍Android中C/C++调用Java代码...
通过以上详细的步骤和技术要点,我们可以看到,无论是Java调用C/C++还是C/C++调用Java,都需要仔细地处理数据类型转换、异常处理以及性能优化等问题。掌握这些技术细节,对于开发高效稳定的跨语言应用程序至关重要。
总的来说,C++调用Java Web Service涉及到的主要步骤包括:生成C++客户端代理类、构建SOAP请求、发送请求并解析响应。过程中可能需要借助如MS SOAP Toolkit这样的工具进行调试和监控,确保通信的正确性。对于复杂的...
这个头文件包含了方法签名和函数原型,是C++调用Java的桥梁。 3. **实现JNI函数**:在C++源文件中,根据生成的头文件实现这些`native`方法。这些函数通常会使用JNI提供的API来执行实际的调用。 4. **加载动态链接...
本示例提供了两个关键的应用场景:Java程序调用DLL(动态链接库)以及C++调用Java类的方法。 首先,Java调用DLL的例子展示了如何通过JNI来利用本地资源。DLL是Windows操作系统上的动态链接库,其中包含可由多个程序...
**C++调用Java方法** 1. **加载Java类:** 使用`JNIEnv`指针的`FindClass`方法,传入要查找的Java类的全名(包括包名)。 2. **获取方法ID:** 使用`GetMethodID`,需要提供类的ID、方法的签名以及方法名。方法...
其中,C++调用Java类的主要途径是通过Java Native Interface (JNI)来实现。 #### JNI简介 JNI(Java Native Interface)是一种标准,用于定义Java应用程序如何与用其他语言编写的本地代码进行交互。它的设计目标是...