Java调用C/C++ – JNI
昨天才看到,但是遇到一些问题,今天解决了,记下……(参考:http://netbeans.org/kb/55/beginning-jni-part1.html)
我用的是Netbeans 6.7,但是和其他的也应该大同小异吧。 基本流程: Java这边的:
创建java文件(带native的),还要记得在类中加入:System.loadLibrary(xxx) 。
然后用javah来生成C/C++的头文件(比如:javah –o pzc.h –jni –classpath … pzjava.Main)。 C这边的:
做一个“中间层”的C或者C++文件,include刚才生成的头文件,把方法复制下来。
还要记得把%JAVA_HOME%\include\和%JAVA_HOME%\include\win32添加到编译器的头文件搜索路径中(还要添加上刚刚生成的头文件的搜索路径) 。
要注意设置好编译器输出的动态库文件名,要和loadLibrary中的一致(在Windows下如果xxx是"pzc”,那输出的就是pzc.dll,如果是linux,就是libpzc.so)。
还要注意设置编译器的其他参数,如:--add-stdcall-alias(在Windows下需要)(查看gcc手册就知道它的意思)。
编译好dll后把dll复制到java项目空间就行了。 有时gcc选项还要加-m32,按照原文所说的,意思应该是,如果是在64位的机器上想要把dll编译成32位的话,那就要加上这个选项。
相关文档:
repaint 对组件进行重绘,比如一个panel,当你remove掉panel里面的一个组件时,你必须调用repaint方法才能对panel进行重绘,进行刷新,你想要删除的组件才能在界面上消失。
revalidate 对组件进行验证,比如一个panel,当你remove掉panel里面的一个组件时,当你调用revalidate方法后,panel的布 ......
1、 Web.xml
1) 配置hibernate
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dbConnectionContext.xml /WEB-INF/serviceContext.xml</param-value> ......
import java.net.URL;
import java.net.URLDecoder;
public class PathUtil
{
/**
* Get the env of windir, such as "C:\WINDOWS".
* @return the env of windir value.
*/
public static String getWindir(){
return System.getenv("windir");
}
......
对于10进制数转换为N(2-36)进制一般都是选择取余除的算法进行转换 ,下面给出两种方案
一种是递归,一种是迭代。通过效率评价两者性能
其中迭代的方案直接取自java源代码。
/*
*Class NotationConvert.java
*Create Date: 2009-11-12
*Author:a276202460
*/
package com.rich.notation;
public class Notat ......