锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲成人综合网站,www.久久久,国产精品调教http://www.aygfsteel.com/bigbear/zh-cnWed, 18 Jun 2025 11:17:06 GMTWed, 18 Jun 2025 11:17:06 GMT60JNA瀹炵幇Java璋冪敤Fortran錛坒77錛?/title><link>http://www.aygfsteel.com/bigbear/archive/2010/05/12/320749.html</link><dc:creator>澶х唺</dc:creator><author>澶х唺</author><pubDate>Wed, 12 May 2010 14:05:00 GMT</pubDate><guid>http://www.aygfsteel.com/bigbear/archive/2010/05/12/320749.html</guid><wfw:comment>http://www.aygfsteel.com/bigbear/comments/320749.html</wfw:comment><comments>http://www.aygfsteel.com/bigbear/archive/2010/05/12/320749.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/bigbear/comments/commentRss/320749.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/bigbear/services/trackbacks/320749.html</trackback:ping><description><![CDATA[鍦ㄦ垚鍔熷疄鐜癑ava璋冪敤C++涔嬪悗錛屾帴涓嬫潵鎯沖埌鑳藉惁閫氳繃JNA瀹炵幇Java璋冪敤Fortran錛屼粖澶╄瘯楠屼簡涓涓嬶紝榪樻槸姣旇緝瀹規槗鐨勩?br /> <br /> 緗戜笂鏈変竴涓狫ava璋冪敤F95鐨勪緥瀛愶紝浣嗘槸鎴戣冭檻涓嶄粎瑕佸疄鐜癋95鐨勮皟鐢紝榪樿瀹炵幇F77鐨勮皟鐢紝鎵浠ヨ垂浜嗕竴浜涘懆鎶樸?br /> <br /> 闂鐨勫叧閿湪浜嶧77涓鴻繃紼嬪悕鑷姩娣誨姞浜嗕竴涓熬閮ㄧ殑涓嬪垝綰匡紝鎵浠ub1榪欎釜榪囩▼錛屽埌Java涓绔紝灝卞彉鎴愪簡sub1_錛岀煡閬撲簡榪欎竴鐐癸紝鍚庨潰灝辯畝鍗曚簡銆?br /> <br /> 1銆佸垱寤轟竴涓姩鎬侀摼鎺ュ簱欏圭洰FortranDLL錛屾柊寤轟竴涓畝鍗曠殑fortran婧愮▼搴廸or1.f錛?br />       subroutine sub1(i)<br />           INTEGER i;<br />           PRINT*, "SUB1 CALLED"<br />           PRINT*, i<br />       END subroutine<br /> 緙栬瘧浠g爜鐢熸垚libFortranDLL.dll銆?br /> <br /> 2銆佹柊寤轟竴涓狫ava欏圭洰錛屽寘鍚獼NA搴?br /> 鍒涘緩涓涓姩鎬佸簱鎺ュ彛浠g爜FLib.java錛?br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">import</span><span style="color: #000000"> com.sun.jna.Library;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> com.sun.jna.ptr.ByReference;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> <img id="Codehighlighter1_103_137_Open_Image" onclick="this.style.display='none'; Codehighlighter1_103_137_Open_Text.style.display='none'; Codehighlighter1_103_137_Closed_Image.style.display='inline'; Codehighlighter1_103_137_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_103_137_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_103_137_Closed_Text.style.display='none'; Codehighlighter1_103_137_Open_Image.style.display='inline'; Codehighlighter1_103_137_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">interface</span><span style="color: #000000"> FLib </span><span style="color: #0000ff">extends</span><span style="color: #000000"> Library </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_103_137_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_103_137_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />    </span><span style="color: #0000ff">void</span><span style="color: #000000"> sub1_(ByReference  i);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span></div> <br /> 鍒涘緩涓涓富紼嬪簭Main.java<br /> <br /> <div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><span style="color: #0000ff">import</span><span style="color: #000000"> com.sun.jna.Native;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">import</span><span style="color: #000000"> com.sun.jna.ptr.IntByReference;<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /><br /> <img id="Codehighlighter1_85_334_Open_Image" onclick="this.style.display='none'; Codehighlighter1_85_334_Open_Text.style.display='none'; Codehighlighter1_85_334_Closed_Image.style.display='inline'; Codehighlighter1_85_334_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockStart.gif" /><img style="display: none" id="Codehighlighter1_85_334_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_85_334_Closed_Text.style.display='none'; Codehighlighter1_85_334_Open_Image.style.display='inline'; Codehighlighter1_85_334_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedBlock.gif" /></span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">class</span><span style="color: #000000"> Main </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_85_334_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_85_334_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /><br /> <img id="Codehighlighter1_131_332_Open_Image" onclick="this.style.display='none'; Codehighlighter1_131_332_Open_Text.style.display='none'; Codehighlighter1_131_332_Closed_Image.style.display='inline'; Codehighlighter1_131_332_Closed_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockStart.gif" /><img style="display: none" id="Codehighlighter1_131_332_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_131_332_Closed_Text.style.display='none'; Codehighlighter1_131_332_Open_Image.style.display='inline'; Codehighlighter1_131_332_Open_Text.style.display='inline';" alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ContractedSubBlock.gif" />    </span><span style="color: #0000ff">public</span><span style="color: #000000"> </span><span style="color: #0000ff">static</span><span style="color: #000000"> </span><span style="color: #0000ff">void</span><span style="color: #000000"> main(String[] args) </span><span style="border-bottom: #808080 1px solid; border-left: #808080 1px solid; background-color: #ffffff; display: none; border-top: #808080 1px solid; border-right: #808080 1px solid" id="Codehighlighter1_131_332_Closed_Text"><img alt="" src="http://www.aygfsteel.com/Images/dot.gif" /></span><span id="Codehighlighter1_131_332_Open_Text"><span style="color: #000000">{<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />        </span><span style="color: #008000">//</span><span style="color: #008000"> Loading dynamically the library</span><span style="color: #008000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" /></span><span style="color: #000000">        FLib lib2 </span><span style="color: #000000">=</span><span style="color: #000000"> (FLib) Native.loadLibrary(</span><span style="color: #000000">"</span><span style="color: #000000">libFortranDLL</span><span style="color: #000000">"</span><span style="color: #000000">, FLib.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />        IntByReference a </span><span style="color: #000000">=</span><span style="color: #000000"> </span><span style="color: #0000ff">new</span><span style="color: #000000"> IntByReference(</span><span style="color: #000000">1234</span><span style="color: #000000">);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/InBlock.gif" />        lib2.sub1_(a);<br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />    }</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /> <img alt="" align="top" src="http://www.aygfsteel.com/images/OutliningIndicators/None.gif" /></span></div> <br /> 娉ㄦ剰錛屽叧閿湪浜庢帴鍙e綋涓殑sub_榪欎釜鍛藉悕瑙勫垯錛屽惁鍒欐棤娉曟壘鍒版壘鍒版寚瀹氳繃紼嬶紝鍙﹀榛樿鎯呭喌涓嬶紝fortran浣跨敤寮曠敤鍙傛暟錛屾墍浠ヤ笉鑳界畝鍗曞疄鐢╥nt浣滀負鍙傛暟錛屽繀欏誨疄鐢ㄥ紩鐢ㄥ弬鏁般?br /> <br /> 榪愯紼嬪簭錛屽緱鍒板涓嬬粨鏋滐細<br /> <br /> run錛?br />  SUB1 CALLED<br />  1234<br /> 鎴愬姛鐢熸垚錛堟繪椂闂達細1 縐掞級<br /> <br /> 3銆丟95鐨勮皟鐢ㄦ洿綆鍗曚竴浜涳紝鍙互鐩存帴浣跨敤bind鎸囧畾杈撳嚭榪囩▼錛堝嚱鏁幫級鍚嶏紝鍙互瀹屽叏涓嶅繀鑰冭檻緙栬瘧鍣ㄧ殑鍛藉悕瑙勫垯錛屾瘮f77鐨勬柟寮忓彲縐繪鎬ф洿濂戒竴浜涖?br /> <br /> 鍙互鍙傝冭繖閲岋細http://www.javaforge.com/wiki/66061 <img src ="http://www.aygfsteel.com/bigbear/aggbug/320749.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/bigbear/" target="_blank">澶х唺</a> 2010-05-12 22:05 <a href="http://www.aygfsteel.com/bigbear/archive/2010/05/12/320749.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>JNA瀹炵幇Java璋冪敤C++鍔ㄦ侀摼鎺ュ簱http://www.aygfsteel.com/bigbear/archive/2010/05/11/JNAExample.html澶х唺澶х唺Tue, 11 May 2010 02:51:00 GMThttp://www.aygfsteel.com/bigbear/archive/2010/05/11/JNAExample.htmlhttp://www.aygfsteel.com/bigbear/comments/320562.htmlhttp://www.aygfsteel.com/bigbear/archive/2010/05/11/JNAExample.html#Feedback1http://www.aygfsteel.com/bigbear/comments/commentRss/320562.htmlhttp://www.aygfsteel.com/bigbear/services/trackbacks/320562.html浠婂ぉ鍋剁劧鐪嬪埌浜咼NA鐨勪粙緇嶏紝涓嬭澆涓嬫潵璇曚簡涓涓嬶紝寰堝ソ鐢紝鐩告瘮杈僇NI瑕佺畝鍗曞緢澶氥傚仛浜嗕竴涓彲浠allback鐨刢++鍔ㄦ侀摼鎺ュ簱錛屽疄鐜頒簡java鍜宑++鐨勪簰鐩歌皟鐢ㄣ?/p>

 1銆佸紑鍙戠幆澧冿細

 寮鍙戝伐鍏鳳細Netbeans 6.8錛屽寘鍚簡Java鍜孋++寮鍙戞彃浠訛紝鐢ㄤ竴涓伐鍏鋒瘮杈冩柟渚匡紝鍙互鍚屾椂寮鍙慍++鐨刣ll鍜孞ava浠g爜銆?/p>

C++鐜錛歁ingW 5.1.6+MSYS銆乬++ 3.4.5

Java鐜錛欽DK 1.6.0_18

 2銆丆++浠g爜

 鐢∟etbeans鍒涘緩涓涓姩鎬侀摼鎺ュ簱欏圭洰JNALib錛屽垱寤轟竴涓猚++婧愭枃浠禼lib.cpp錛岀敓鎴愮粨鏋滀負libJNALib.dll

 #include <stdlib.h>
#include 
<iostream>
using namespace std;
extern "C"
{
    typedef 
void (*OpenFunc)(const char*,int);

    OpenFunc openfunc 
= NULL;

    
void init(OpenFunc func) {
        cout 
<< "init called" <<endl;
        openfunc 
= func;
    }


    
void test() {
        
if (openfunc == NULL) {
            cout 
<< "openfunc is NULL" << endl;
        }

        (
*openfunc)("test"0);
    }

}

 

娉ㄦ剰錛氬叾涓璒penFunc澹版槑浜嗕竴涓洖璋冪被鍨嬶紝涔熷氨鏄竴涓嚱鏁版寚閽堬紝鍙互閫氳繃init灝唈ava涓殑OpenFunc鏂規硶浼犻掕繘鏉ワ紝璁劇疆榪欎釜鍑芥暟鎸囬拡錛屽姝や竴鏉ワ紝鍙互瀹炵幇C++鍒癑ava鐨勫洖璋冦?/p>

 3銆丣ava浠g爜

 鍒涘緩涓涓狫ava欏圭洰JNADemo錛屽垱寤轟竴涓寘clibtest錛屽垱寤轟互涓媕ava浠g爜錛?/p>

 

package clibtest;

import com.sun.jna.Callback;
import com.sun.jna.Library;


public interface CLib extends Library{

    
public interface OpenFunc extends Callback {
        
void invoke(String filename, int i);
    }

    
void init(OpenFunc openfunc);
    
void test();
}



 

package clibtest;

import com.sun.jna.Native;

public class hello {

    
public static void main(String[] args) {
        
// Loading dynamically the library
        CLib lib = (CLib) Native.loadLibrary("libJNALib", CLib.class);

        lib.init(
new CLib.OpenFunc() {

            
public void invoke(String filename, int i) {
                System.out.println(
"callback called.");
                System.out.println(filename);
            }

        }
);

        lib.test();
    }

}


 

4銆侀」鐩粨鏋勫涓?/strong>



5銆佺紪璇慍++欏圭洰錛岀敓鎴恖ibJNALib.dll錛屾嫹璐濆埌JNADemo涓葷洰褰曪紝鐩綍緇撴瀯濡備笅錛?/strong>

6銆佽繍琛岀▼搴忥紝緇撴灉濡備笅錛?/strong>



澶х唺 2010-05-11 10:51 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 额济纳旗| 丹东市| 广宗县| 阳山县| 南乐县| 扬中市| 望谟县| 二手房| 舒兰市| 贵南县| 社会| 杂多县| 客服| 龙江县| 土默特左旗| 新化县| 射阳县| 西平县| 宁乡县| 广昌县| 星子县| 海原县| 奉贤区| 江川县| 咸丰县| 宝应县| 山阳县| 嘉禾县| 岢岚县| 梓潼县| 屏东市| 舒城县| 名山县| 舒兰市| 涟水县| 临邑县| 蕲春县| 都匀市| 大新县| 翁源县| 罗定市|