当前位置:首页 » 编程软件 » c与java混合编程

c与java混合编程

发布时间: 2023-02-08 12:37:22

⑴ 如何在C++和java之间互相调用

java 与 C++ 两种编程语言,它们之间的相互调用:
1、java 调用C++编写的dll,可使用JNI 或 Jawin 开源项目(推荐第二种方法)。
2、C++ 调用java 的变量、方法,通过JNI (Java Native Interface)与java类交互。

----操作步骤(只总结第二个)-----
(1) vc6.0编译C++程序,开发环境设置:工具--》选项--》工具,工具标签下:选择“include files”,加入头文件目录:C:\Program Files\Java\jdk1.5.0\include 和 C:\Program Files\Java\jdk1.5.0\include\win32 ;选择“Libary files"下,加入LIB目录:C:\Program Files\Java\jdk1.5.0\lib 。会编译成exe文件。
执行程序环境设置: Path环境变量加入:C:\Program Files\Java\jdk1.5.0\jre\bin\client (jvm.dll所在目录),若不加入path会提示,执行时找不到jvm.dll.

(2)GetStaticMethodID(cls,"main","([Ljava/lang/String;)V");
//([Ljava/lang/String;)V 是main()签名
在java程序目录下执行:javap -s -p ClassDemo (注:ClassDemo.java 已经编译)
取main 下面的语句 :: Signature: ([Ljava/lang/String;)V

(3)附代码示例:

java程序
import java.io.*;
public class DemoMain{
public static void main(String[] args) throws java.io.IOException, java.lang.NullPointerException
{
System.out.println("This is a test.");
}
}

C++程序:
#ifndef __cplusplus
#define __cplusplus
#endif
#include "jni.h"
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#pragma comment (lib,"C:\\Program Files\\Java\\jdk1.5.0\\lib\\jvm.lib") // 动态调用lib
#pragma warning(disable: 4129) // 关闭 warning, 4129
void main() {
LoadLibrary("C:\\Program Files\\Java\jre1.5.0\\bin\\client\\jvm.dll"); // 动态调用dll
JavaVM *jvm;
JNIEnv *env;
JavaVMInitArgs vm_args;
JavaVMOption options[3];
options[0].optionString = "-Djava.compiler=NONE";
options[1].optionString = "-Djava.classpath=.";
options[2].optionString = "-verbose:jni";
vm_args.version = JNI_VERSION_1_4;
vm_args.nOptions = 3;
vm_args.options = options;
vm_args.ignoreUnrecognized = JNI_TRUE;
jint res = JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args); // 创建虚拟机
if (res < 0) {
fprintf(stderr, "Can't create Java VM\n");
exit(1);
};
jclass cls = env->FindClass("DemoMain");
if (cls == 0) printf("Sorry, I can't find the class");
fprintf(stdout, "This is invokeSimplified4.\n");
jmethodID get_main_id;
if(cls != NULL)
{
get_main_id =env->GetStaticMethodID(cls,"main","([Ljava/lang/String;)V");
fprintf(stdout, "This is invokeSimplified5.\n");
if(get_main_id != NULL )
{
jclass string = env->FindClass("java/lang/String");
jobjectArray args = env->NewObjectArray(0,string, NULL);
fprintf(stdout, "This is invokeSimplified6.\n");
int i = env->CallIntMethod(cls, get_main_id, args);
fprintf(stdout, i+ "This is invokeSimplified7.\n");
}
}
jvm->DestroyJavaVM();
fprintf(stdout, "Java VM destory\n");
}

⑵ 我是个门外汉,请问C++和JAVA可以一起学吗

建议不要混在一起学,Java不是C家族成员。原因如下:

1)可以先学C++后再学Java,有C++的指针,面向对象基础作铺垫,再学Java或其它任何一门语言会有事半功倍效果;

2)正如前面所说,Java不是C家族的成员,例如,在面向对象这块至少在一些语法层面上,你会发现Java的语法是很恶心的。如B类需要继承A类:

Java会这样写

classA{

}

classBextendsA{

}

C++这样写(C家族)

classA{

};

classB:A{

};

C#这样写(C家族)

classA{

}

classB:A{

}

再比如,在Java里,类变量,类方法,不仅可以用类名去调用,甚至还可以用对象名去调用,而在C家族里是不允许的。

再比如,在Java里定义类的成员时,若不加访问修饰符时,默认访问级别是本包任何地方均可以访问,而C家族默认是私有的,即类体内部可访问。

当然还有很多差异...

⑶ C# 和java 可以放在一起编程吗、

图书管理系统 是C/S模式 还是B/S模式?
B/S模式 就是网站的话 两个人各开发某些部分 然后 两个都运行起来
C/S模式 就是桌面程序的话 两个开发之后 相互之间用外部调用
这个是不是办法的办法
最好是其中一个自学
JAVA的同学学习.NET的话 会很快上手。 我是这么学过来的。

⑷ java和c语言能混合编程吗。

通过JNI,Java中的native方法,就是调用C/C++写的函数

⑸ Java 和C语言同时学可以吗

个人意见
相同点:他们都是高级语言,都需要对电脑的基础知识的了解
不同点:C是属于底层开发,是高级语言但是又具有操作硬件的特点,所以学起来比较困难,如果想学好必须先知道计算机的内存工作原理比较好!要么就是花很多时间积累经验(就算是不知道内部原理但是会用就OK了)
JAVA是属于面向对象的,简单的说就是 它的数据对象具有 封装、集成性等特点。但是相对比较简单,涉及的底层东西比较少!比C++容易多了!个人意见!
如果两者同时学未免都学不好,倒是建议楼主可以有所侧重,主要学C然后兼顾了解JAVA未免不可!到时候等C学成时候,再返回来攻JAVA倒是上上选!
当然了,如果楼主又足够的时间的话(假设你是一名在校学生),那就另当别论了!想怎么学就怎么学!

⑹ 如何在C++和java之间互相调用

在JAVA中调用C++的基本步骤
(1)、编写带有native方法的java类
(2)、使用javac命令编译所编写的java类
(3)、使用javah命令处理类文件,生成C/C++头文件
(4)、使用C/C++实现本地方法
(5)、将C/C++编写的文件生成动态连接库
(6)把生成的.dll库放到c:/windows/system32目录下

⑺ 如何为一个用C语言编写的程序加上一个用Java编写的界面

1、编写java程序jcall.java,如下:
public class jcall
{
static
{
System.loadLibrary("jcallc.dll");
}

public native static int test(int i);

public static void main(String[] args)
{
jcall jc = new jcall();
int i;
i = jc.test(4);
System.out.println(i);
}
}

2、编译java
javac jcall.java
4、生成头文件
javah jcall
生成jcall.h文件
5、制作VC动态库
建立DLL工程,程序添加:
#include "jcall.h"
JNIEXPORT jint JNICALL Java_jcall_test (JNIEnv *, jclass, jint p)
{
int j = p*2;
return j;

将jcall.h jni.h复制到VC工程目录,然后编译。
6、java调用
将jcallc.dll文件复制到jcall.java的目录中,运行
java jcall,就可以得到运行结果。

⑻ JAVA和C语言可以共同开发某个应用软件吗

这个是可以的,因为有混合编程这个概念的,两者只要环境在就可以了,程序就是为实现功能的。

⑼ 如何在java中实现c语言中的联合的功能

用类, 只有这样。
class DateE{
long ul[2];
int ui[4];
byte uc[8];

//get/set方法

}

java没有 unsigned long,如果数很大就换成BigDecimal
,或 BigInteger

⑽ java和C#能否混合编程

请问你这样的代码用什么编译器来编译啊?明显是不行的啊!不过你可以用多文件调用的方式来搞。单一文件是肯定不行的

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:750
制作脚本网站 发布:2025-10-20 08:17:34 浏览:1012
python中的init方法 发布:2025-10-20 08:17:33 浏览:719
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:879
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:774
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1127
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:351
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:229
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:912
python股票数据获取 发布:2025-10-20 07:39:44 浏览:876