- 浏览: 845098 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (379)
- struts (5)
- hibernate (16)
- spring (16)
- ssh (20)
- MySQL (16)
- 数据库脚本 (2)
- DownLoad (1)
- GAE (5)
- Java (103)
- LoadRunner (2)
- VF (1)
- 学习资料 (24)
- 软件使用 (21)
- 通信类 (4)
- 生活 (3)
- J2ME (1)
- 心理学 (1)
- Linux (26)
- Android (3)
- Oracle (1)
- 面向对象概念&面试准备 (11)
- ExtJs (2)
- Google Map (1)
- Flex (47)
- 算法研究 (1)
- share (20)
- python (1)
- MongoDB (7)
- centos6 (13)
- C++ (8)
- DB2 (3)
- C# (1)
- 代码片段 (24)
- Lucene (2)
- php (1)
- NodeJS (1)
- Express (1)
最新评论
-
shua1991:
已阅,我表示同意。
Eclipse统计代码行数 -
nakedou:
写的不错,挺详细的
在CentOS中使用 yum 安装MongoDB及服务器端配置 -
sjp524617477:
好方法
Eclipse统计代码行数 -
simpletrc:
<script>ale ...
Java写到.txt文件,如何实现换行 -
csdn_zuoqiang:
Apache Ftp Server,目前是1.0.4,非常好的 ...
Apache FtpServer在64位系统下服务不能启动解决方法
.net
产生的比java晚,其类库的封装在某些方面也比java更优秀,更全面。比如最近在做一个OJ,看到网上的一些做法是用
java+c++,C++用作所提交程序的测试。c++虽然好,但是他的编写比较复杂。因此,我选择的是C#,用.net的类库可以很方便的获得一个进程
(用户提交的程序)运行的时间和消耗的内存。下面是我的测试程序: 首先我在网上查了一些资料: C# method calls within Java Program
这篇文章大概传达了这样一个意思: Java 调用C#过程: 上面这篇文章我搜了一下,已经被转载了无数次了,关于网上c++调c# dll基本都是这篇文章
然后再用google搜一下jni的例子是一堆一堆的。
====================================================================
了解了java调c#在简单的过程,再了解了jni和c++如何调c#,这样用java调c#应该就没什么问题了.但是本人在做的时候还有一点小小的路径问题,报了一个jvm unexpected exception,让我真是郁闷了好久。
====================================================================
先写一个java类
然后用javah命令产生.h的文件(网上jni的文章介绍的很多) 我使用的IDE是NetBeans,生成的.class文件和源文件不在同一个文件夹下,把TestJNI.class拷贝到TestJNI.java同一目录下。然后运行cmd.exe在src目录下,javah com.ypoj.jni.TestJNI 新
建一个c++的类库,本人使用的是VS2008,这里需要注意的是,在刚刚讲到原理的时候是java->c++ dll->managed
c++->c#,然而vc++里面已经集成了managed c++,所以其实我做的时候并没有把c++和managed
c++分开来做,因为vs2008里已经集成好了,具体做法是:选择《项目》->
《属性页》->《配置属性》->《常规》->《公共语言运行库支持》,选择公共语言运行库支持(/clr)。这样就可以了 用javah生成的com_ypoj_jni_TestJNI.h 这里我们就实现这个方法 JNIEXPORT jint JNICALL Java
_com_ypoj_jni_TestJNI_add 在编译的时候会提示需要加入两个头文件,分别是jni.h和jni_md.h,这两个文件可以在你本机安装的jdk的文件夹里搜到。如果编译的时候说找不到jni.h,则include的时候写成 #include "jni.h",<>改成""。
接下来先完成C#的 Dll
最后实现C++里的那个函数 首
先把生成的C#的Dll拷贝到C++源文件的同一个目录下,也就是和C++的dll,.cpp文件放在同一个目录,这里不是把C#的dll放在 c++
dll同一目录(Debug目录),虽然放在Debug目录也可以(改变引入的路径),但是当用java再调的时候就会出错了。 注意:一定先把c#的dll拷到c++的项目里,然后再去写那个jni函数
c++ 主 DLL 文件
生成c++的dll, 最后把c#和c++的dll拷贝到library.path下,我把他们拷贝在了jdk的bin目录下 运行结果 run:
Java -> JNI -> C++ dll <== Managed C++ ==> C# dll
(JNIEnv *, jobject, jint, jint);
40
成功生成(总时间:0 秒)
发表评论
-
微信JS
2013-10-26 21:17 2096<div class="iteye-blog- ... -
ubuntu下MySQL用source命令导入sql文件出现乱码解决方法
2012-11-18 23:46 1566首先建立数据库的时候指明数据库编码如: CREA ... -
RandomAccessFile
2012-10-18 18:16 986public void run() { try { ... -
java中多种方式读文件
2012-10-18 16:53 985java中多种方式读文件一、多种方式读文件内容。1、按字节读取 ... -
FileChannelMain
2012-10-15 18:12 1116package scan; import java ... -
Apache FtpServer在64位系统下服务不能启动解决方法
2012-06-10 21:29 6917Apache FTPServer是一款用Java开发的 ... -
Java 集合类
2012-06-07 22:03 1794Java 集合类 1. 为什么要了解J ... -
short、int、long与byte之间的转换工具类
2012-05-31 11:05 4526/** * 各基础类型与byte之间的转换 * ... -
Linux Mint 13 配置JAVA 环境
2012-05-24 22:35 26620.1--下载 JAVA ... -
FatJar+Exe4j+Inno Setup 生成可执行的exe文件
2012-04-17 10:54 14641、fatjar 是Eclipse的一个免费的插件。它的 ... -
JPanel JTextField add Focus 获取焦点解决方案
2012-03-30 21:29 3024public class TabPagePanel ex ... -
JList List<E> Page 分页
2012-03-30 21:28 1766package view.retrieve.comps. ... -
JButton setAction的BUG
2012-03-23 10:53 1312今天在使用JButton的时候,想用setText()setI ... -
自定义JTabbedPane皮肤
2012-03-22 12:05 4741package ui; import java.awt. ... -
两个工具类
2012-03-17 21:27 895package com.retrieve.utils; ... -
两个工具类
2012-03-17 21:27 0package com.retrieve.utils; ... -
mysql、sqlserver、oracle分页,java分页统一接口实现
2012-03-13 17:56 0定义: pageStart 起始页,pageEnd 终止页, ... -
Invalid command: InetLoad::load
2012-03-06 16:41 1370Invalid command: InetLoad::load ... -
NIO: High Performance File Copying
2012-03-01 17:25 1207In a previous tip, I discussed ... -
自定义JList
2012-02-03 15:39 802自定义JList。
相关推荐
### Java调用C#封装的DLL方法 #### 第一种方法:Java利用JNA进行调用 **背景介绍:** 为了实现Java与C#之间的交互,一种常用的方式是通过调用C#封装的DLL文件来完成特定功能。这种方法涉及到.NET Framework与Java...
在本篇文章中,我们将详细介绍如何使用 JAVA 调用 C# 编写的 DLL 文件。首先,我们需要了解什么是 DLL 文件,以及它在编程中的应用。 DLL 文件是一种动态链接库文件,它可以被多个程序同时使用,减少了代码的重复...
本话题聚焦于“Java调用C# DLL”,这是一个涉及到Java与.NET Framework交互的技术问题。C#编译的DLL(动态链接库)是.NET环境下的组件,而Java作为跨平台的语言,如何与之交互是一个重要的知识点。 首先,为了实现...
java调用C#封装的dll(jna,com)java调用C#封装的dll(jna,com)java调用C#封装的dll(jna,com)
在IT行业中,跨语言通信是常见的需求,...总的来说,Java调用C# DLL涉及了跨平台通信、语言间互操作、库调用等多个复杂知识点。通过学习和实践,你可以掌握这些技术,增强你的编程能力,应对更多复杂系统的设计和开发。
- 使用C#创建DLL,定义公共方法供外部调用。 - 在C#中使用`[DllImport]`属性声明C接口,这使得C#代码可以被C代码调用。 - 编写一个C语言的中间层,它会调用C# DLL,并提供符合JNI规范的接口。 2. **C#与C的互...
### JAVA调用C# DLL文件的关键步骤和技术细节 #### 一、C#编写COM组件 在实际工作中,可能需要在不同编程语言之间进行交互。例如,一个基于Java的应用程序可能需要调用用C#编写的DLL文件来实现某些功能。这通常...
在C#环境中,使用Visual Studio或其他开发工具创建一个新的类库项目,编写需要被Java调用的公共方法。编译完成后,生成的DLL文件将包含可供其他程序使用的函数。 3. **JNI头文件生成**: 使用Java的`javah`工具,...
Java调用C# DLL是跨语言交互的一种常见需求,特别是在企业级应用开发中,可能会遇到已有的C#组件需要在Java环境中使用的场景。Jacob(Java COM Bridge)是一个开源项目,它提供了一个Java到COM(Component Object ...
1. **C# DLL开发**:首先,在C#环境中创建一个动态链接库项目,编写需要暴露给Java调用的方法。C#提供了丰富的数据类型和API,可以创建复杂的功能模块。 2. **DLL导出**:在C#中,使用`[DllExport]`特性标记要导出...
标题"java调用c#样例"指的是使用Java语言通过Jacob库调用C#编写的动态链接库(DLL)。C# DLL通常包含.NET Framework中的方法和功能,而Java应用程序可以借助Jacob库来访问这些功能,从而实现跨语言的互操作性。 ...
Java 调用 C# 封装的 DLL 方法有两种方式,一种是使用 JNA(Java Native Access)进行调用,另一种是使用 Jacob 进行调用。 第一种方法:使用 JNA 使用 JNA 调用 C# 封装的 DLL 方法需要安装 Visual Studio 2010 ...
本主题聚焦于如何使用Java调用由C#编写的DLL(动态链接库)文件。这种技术通常应用于系统集成、利用已有的C#组件或者服务,以及实现多语言环境下的协作开发。下面将详细阐述这个过程。 首先,C#编写的DLL是.NET框架...
标题"JAVA调用C++/C#的DLL"涉及到的技术点主要集中在Java Native Interface(JNI)上,这是一种允许Java代码与其他编程语言(如C++或C#)进行交互的标准机制。下面我们将深入探讨这一主题。 首先,JNI是Java平台的...
但是,我们可以利用这个特性创建一个C#中间层,该层通过P/Invoke调用C# DLL,然后暴露一个可以被Java调用的接口。 4. **C# COM组件** 另一种可行的方法是将C# DLL包装成COM(Component Object Model)组件。COM是...
Java通过JNI调用DLL动态库,亲测试编写
这里提供了一种Java调用C#DLL的方法,主要涉及以下几个关键步骤: 1. **环境准备**: 首先,确保你拥有合适的开发环境。在这种情况下,使用的是Visual Studio 2019的社区版,它包含了.NET桌面开发、C++桌面开发...
在本文中,作者面临的问题是如何在Java项目中使用C#编写的.dll文件。由于Java无法直接调用C#代码,因此引入了C++作为中间层。C++项目配置为CLR(Common Language Runtime),可以引用并调用C#的方法,然后JNA可以...