MATLAB與C_C_FORTRAN語(yǔ)言混合編程_第1頁(yè)
MATLAB與C_C_FORTRAN語(yǔ)言混合編程_第2頁(yè)
MATLAB與C_C_FORTRAN語(yǔ)言混合編程_第3頁(yè)
MATLAB與C_C_FORTRAN語(yǔ)言混合編程_第4頁(yè)
MATLAB與C_C_FORTRAN語(yǔ)言混合編程_第5頁(yè)
已閱讀5頁(yè),還剩9頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第 26卷 第 6期 2004年 12月 三峽大學(xué)學(xué)報(bào) (自然科學(xué)版 J of China Three G orges Univ. (Natural Sciences Vol. 26 No. 6Dec. 2004收稿日期 :2004204206作者簡(jiǎn)介 :陳建平 (1978- , 男 , 碩士研究生 .MAT LAB 與 C/C +、 FORTRAN 語(yǔ)言混合編程陳建平 羅先啟(三峽大學(xué) 土木水電學(xué)院 , 湖北 宜昌 443002摘要 :對(duì) MA TLAB 與 C/C +和 FOR TRAN 語(yǔ)言進(jìn)行混合編程的常用方法進(jìn)行了介紹 , 分析了其實(shí)現(xiàn)方式和各自的利弊 , 并用實(shí)例對(duì) M EX 文件

2、實(shí)現(xiàn)方式進(jìn)行了較詳細(xì)的論述 .關(guān)鍵詞 :MA TLAB ; C/C +; FOR TRAN ; 混合編程 中圖分類號(hào) :TP313 文獻(xiàn)標(biāo)識(shí)碼 :A 文章編號(hào) :16722948X (2004 0620547205Mixed Programming T echnology for MAT FORTRANChen Jianping (College of Civil &Hydropower , Y ichang 443002,China Abstract This paper of mixed programming technology for MA TLAB with C/C +an

3、d FOR TRAN discusses the advantages and disadvantages of these methods. Finally ,it speci 2fies the use of M EX 2by examples.K eyw ords MA TLAB ; C/C +; FOR TRAN ; mixed programming technology1 混合編程的意義及其實(shí)現(xiàn)方式1. 1 混合編程的意義MA TLAB 語(yǔ)言具有功能強(qiáng)大 、 開發(fā)效率高等諸多優(yōu) 點(diǎn) , 已 在 工 程 實(shí) 際 中 得 到 廣 泛 應(yīng) 用 , 但 是 與 FOR TRAN 、 C/C

4、 +等語(yǔ)言相比 , 其執(zhí)行效率較低 , 特別是當(dāng)程序中含有大量循環(huán)語(yǔ)句 (例如迭代計(jì)算 時(shí) ,MA TLAB 就有些力不從心 , 速度很慢 , 而運(yùn)用 FOR TRAN 等擅長(zhǎng)數(shù)值計(jì)算語(yǔ)言進(jìn)行編程 , 其運(yùn)行效 率高 . 一方面 , 如果放棄 MA TLAB 強(qiáng)大功能和數(shù)量 眾多的應(yīng)用工具箱 , 無疑是資源的極大浪費(fèi) . 另一方 面 , 針對(duì)工程實(shí)際 , 人們用 FOR TRAN 、 C/C +語(yǔ)言 已編寫了大量實(shí)用程序 , 如果將其重新改寫成 M 文 件移植到 MA TLAB 環(huán)境中 , 不僅要花費(fèi)大量的時(shí)間 和精力 , 而且有時(shí)還降低了其運(yùn)行效率 . 可否將二者 優(yōu)勢(shì)互補(bǔ)呢 ? 混合編程就

5、是其有效的解決途徑 . 1. 2 混合編程的實(shí)現(xiàn)正是考慮到上面這些原由 ,MA TLAB 系統(tǒng)提供 了其應(yīng)用程序接口 (Application Program Interface 來解決這些問題 . API 主要包括 3部分 :MEX 文件 外部程序調(diào)用接口 , 用來在 MA TLAB 環(huán)境下調(diào)用 FOR TRAN 、 C/C +語(yǔ)言編寫的程序 ; MA T 文件應(yīng) 用程序 數(shù)據(jù)輸入輸出接口 , 用于 MA TLAB 系統(tǒng) 與外 部 環(huán) 境 之 間 互 傳 數(shù) 據(jù) ; 計(jì) 算 引 擎 函 數(shù) 庫(kù) MA TLAB 處于后臺(tái)作為一個(gè)計(jì)算引擎 , 與其它應(yīng)用 程序建立客戶機(jī) /服務(wù)器關(guān)系 , 在其它

6、應(yīng)用程序中調(diào) 用 1,2. 1. 2. 1 M EX 文件M EX 文件是按照一定格式 , 用 FOR TRAN 或 C/C +語(yǔ)言編寫的源程序 , 在 MA TLAB 下借助相應(yīng) 的編譯器 , 生成的動(dòng)態(tài)鏈接函數(shù)的統(tǒng)稱 . 在 Windows 操作系統(tǒng)下 , 是用 MA TLAB 附帶的批處理 mex. bat 來編 譯 生 成 文 件 后 綴 名 為 . dll (Dynamic Link Li 2brary 動(dòng)態(tài)鏈接庫(kù)文件 , 該文件可在 MA TLAB 環(huán)境 下 , 像命令函數(shù)一樣直接運(yùn)行和調(diào)用 , 使用起來極為 方便 . 采取 M EX 文件方式 , 是重復(fù)利用已有 FOR 2TRA

7、N 、 C/C +程序 , 讓 MA TLAB 和 FOR TRAN 、 C/C +語(yǔ)言優(yōu)勢(shì)互補(bǔ)的最有效和常用的方式 , 但不 足的是其開發(fā)的程序只能在 MA TLAB 環(huán)境下運(yùn)行 .本文將詳細(xì)的論述基于 Windows 平臺(tái)上其實(shí)現(xiàn)過 程 .1. 2. 2 MA T 文件應(yīng)用程序MA TLAB 數(shù)據(jù)存儲(chǔ)的默認(rèn)文件名后綴為 . mat , 習(xí)慣上稱該格式的文件為 MA T 文件 , MA T 文件應(yīng) 用程序提供了一種方法讓 MA TLAB 與其它軟件進(jìn) 行數(shù)據(jù)輸入輸出 .1. 2. 3 MA TLAB 計(jì)算引擎MA TLAB 引擎采用客戶機(jī) /服務(wù)器的計(jì)算模式 , 通過對(duì) Activex 技術(shù)

8、的支持 , 實(shí)現(xiàn) VC 應(yīng)用程序 (客戶 機(jī) 與 MA TLAB (服務(wù)器 的動(dòng)態(tài)連接通信 . 假如用戶 想以較短的時(shí)間開發(fā)前臺(tái)為 VC +產(chǎn)生的用戶界 面 , 后臺(tái)由 MA TLAB 計(jì)算分析 的 應(yīng) 用 程 序 , 使 用 MA TLAB 引擎是很好的選擇 . 在實(shí)際應(yīng)用中 ,MA T 2 LAB 作為 ActiveX 的自動(dòng)化服務(wù)器 , 接收通過引擎?zhèn)?來的數(shù)據(jù)和指令信息并進(jìn)行相應(yīng)的處理 ,MA TLAB ,MA TLAB , , 而且應(yīng)用程序 與 MA TLAB , 整 個(gè)算法在 MA TLAB 中執(zhí)行 , 從而降低了程序的執(zhí)行 效率 , 因而其實(shí)際應(yīng)用不多 .1. 2. 4 MCC

9、和 MA TCOM前面提到的幾種方式都是以 MA TLAB 為主 , 程 序的運(yùn)行都離不 MA TLAB 環(huán)境 . 除此之外 , 另一種 方式就是將 MA TLAB 語(yǔ)言程序翻譯成 C/C +語(yǔ) 言代碼 , 再用 C/C +語(yǔ)言的方式進(jìn)行開發(fā) . MA T 2 LAB 自己提供了 C 語(yǔ)言翻譯程序 mcc , 另一種是原 第 3方公司 Math Tools 開發(fā)的 MA TCOM. 后者出現(xiàn) 較早 , 功能遠(yuǎn)比 MA TLAB 自己的翻譯程序強(qiáng)大 , 所 以 Math Tools 公司已經(jīng)被 MathWorks 公司收購(gòu) , 并 已將其開發(fā)技術(shù)融于新推出的 MA TLAB 6. 0(Re 2

10、lease 12 中 . 但二者都不完善 , 有大量的 MA TLAB 函數(shù)及數(shù)據(jù)類型是不能兼容變換的 , 所以有時(shí)會(huì)發(fā)現(xiàn) 將簡(jiǎn)潔的 MA TLAB 程序翻譯成 C 語(yǔ)言程序很晦澀 . 翻譯后的 C 程序幾乎不適合手動(dòng)去維護(hù) , 更談不上 升級(jí)了 3.2 C/C +語(yǔ)言 MEX 文件的實(shí)現(xiàn)C/C +語(yǔ)言 M EX 文件的實(shí)現(xiàn)包括 , 源程序的 編輯 、 M EX 編譯和調(diào)試 . 在編譯和調(diào)試前要進(jìn)行編譯 器的配置 .2. 1 C/C +語(yǔ)言 MEX 文件的編寫C/C +語(yǔ)言 M EX 文件的編寫格式 , 除了要遵 循 C/C +語(yǔ)言語(yǔ)法外 , 還須要加入用于 MA TLAB 和 C/C +語(yǔ)言

11、通信協(xié)議 入口子程序 . 我們首先 看一個(gè)極簡(jiǎn)單的 C 語(yǔ)言 M EX 文件 , 該程序的作用是 兩個(gè)數(shù)求和 , 源程序如下 :/示例程序 myplus. c :求兩個(gè) Double 數(shù)之和 #include ” mex. h ”/3計(jì)算功能子程序 3/void myplus (double y,double x,double z y0=x0+z0;/3以下是入口子程序 3/void mexFunction (,mxArray 3plhs,intx 3y , 3z ;int mrows0,ncols0;int mrows1,ncols1;/3檢查輸入輸出變量個(gè)數(shù) 3/if (nrhs ! =2

12、mexErrMsgTxt (” Two inputs arquired ” ;elseif (nlhs >1 mexErrMsgTxt (” Too many output arguments ” ;/3輸入量必須是兩個(gè)非復(fù)數(shù) double 類型 3/ mrows0=mx G etM (prhs0 ;ncols0=mx G etN (prhs0 ;if (! mxIsDouble (prhs0 |mxIsComplex (prhs 0 |! (mrows0=1&&ncols0=1 mexErrMsgTxt (” Inputs must be all noncomplex

13、scalar double. ” ;mrows1=mx G etM (prhs1 ;ncols1=mx G etN (prhs1 ;if (! mxIsDouble (prhs1 |mxIsComplex (prhs 1 |! (mrows1=1&&ncols1=1 mexErrMsgTxt (” Inputs must be all noncomplex scalar double. ” ;if (mrows0! =mrows1|ncols0! =ncols1 mexErrMsgTxt (” Inputs must be same dimen 2 sion. ” ;/3為返回

14、參數(shù)創(chuàng)建矩陣 3/plhs 0=mxCreateDoubleMatrix (mrows0, ncols0,mxREAL ;x =mx G et Pr (prhs0 ;z =mx G et Pr (prhs1 ;845三 峽 大 學(xué) 學(xué) 報(bào) (自 然 科 學(xué) 版 2004年 12月y =mx G et Pr (plhs0 ;/3調(diào)用計(jì)算功能子程序 myplus (3/myplus (y ,x ,z ;上面程序?yàn)橐坏湫偷?C 語(yǔ)言 M EX 文件 , 程序由 兩部分構(gòu)成 :一個(gè)計(jì)算功能子程序 (myplus (函數(shù) 和 一個(gè)入口子程序 (mexFunction (函數(shù) . 顧名思義 , 計(jì) 算功能

15、子程序包含所有實(shí)際所需完成的功能 、 算法 , 我們已有的或現(xiàn)編的 C/C +、 FOR TRAN 程序就被 當(dāng)做計(jì)算功能子程序使用 , 它由入口子程序調(diào)用 . 入 口子程序是 MA TLAB 系統(tǒng)和外部程序之間溝通的 橋梁 , 主要用來完成兩者之間的通信 . 上面示例程序 中 ,mexFunction (函數(shù)有大量語(yǔ)句是用于檢查變量 的數(shù)據(jù)類型等輔助性工作 , 這是必要的 , 因?yàn)?MA T 2 LAB 語(yǔ)言不像 C/C +等語(yǔ)言變量使用前須聲明 , 對(duì)類型的檢查可以避免許多錯(cuò)誤的發(fā)生 .MA 2 LAB API 函數(shù) , . mexFunction (, : void mexFunctio

16、n (,mxArray 3plhs,int nrhs ,const mxArray 3prhs /一些必要的代碼 , 用來完成 MA TLAB 系 統(tǒng)與計(jì)算功能子程序之間的通信其參數(shù)的含意為 :nrhs和 nlhs , 整型變量 , 分別為 調(diào)用 M EX 文件時(shí)輸入 、 輸出參數(shù)的個(gè)數(shù) . prhs 、 plhs , 指針數(shù)組 , 其元素分別為指向輸入 、 輸出參數(shù)的指針 . mexErrMsg Txt (, 用于輸出錯(cuò)誤信息 , 并返回到 MA TLAB 命令提示符下 .mx G etM (和 mx G etN ( , 獲得矩陣的行數(shù)和列 數(shù) , 參數(shù)為指向矩陣的指針 , 如程序中的 mr

17、ows0= mx G etM (prhs0 的作用為 :得到第一個(gè)輸入實(shí)參的 行數(shù) , 并賦值給整型變量 mrows0.mxIsDouble (、 mxIsComplex (, 判斷矩陣是否為 雙精度型 、 復(fù)數(shù)型 . 輸入?yún)?shù)為矩陣指針 , 返回值為 BOOL 值 .mxCreateDoubleMatrix (int m ,int n ,mxComplex 2 ity complexFlag , 創(chuàng)建一個(gè)未賦值的雙精度矩陣 ,m , n 為創(chuàng)建矩陣的行 、 列數(shù) ,complexFlag 為標(biāo)識(shí)是實(shí)數(shù) 還是復(fù)數(shù) . 該函數(shù)返回所創(chuàng)建矩陣的指針 .mx G et Pr (獲得矩陣實(shí)數(shù)部分的指針

18、 , 輸入?yún)?shù) 為矩陣的指針 , 返回值為矩陣實(shí)數(shù)部分的雙精度指 針 .MA TLAB API 函數(shù)還包含其它許多接口函數(shù) , 分為 mx 2函數(shù)和 mex 2函數(shù) , 詳細(xì)情況可查閱相關(guān)文 獻(xiàn) .M EX 源程序編寫完成后 , 還要經(jīng)過編譯后才能 生成 dll 文件 , 供 MA TLAB 或其它程序調(diào)用 , 編譯前 要對(duì) MA TLAB 進(jìn)行編譯器的配置 .2. 2 編譯器的配置編譯 器 的 配 置 是 通 過 MA TLAB 的 配 置 文 件 (mexopts. bat 進(jìn)行的 , 其具體過程為 :在 MA TLAB 命令窗口下鍵入 :mex2steup , 隨后系統(tǒng)彈出一個(gè) DOS

19、窗口 , 按照提示一步步選擇完成即可 . 該命令可帶許 多參數(shù) , 可針對(duì)不同的操作系統(tǒng)進(jìn)行多種配置 2,3. 2. 3 C/C +語(yǔ)言 MEX 文件的編譯編譯方法很簡(jiǎn)單 , TLAB 命令提示符 , 為需編譯的源程 , , 修改源程序 、 調(diào) . 編譯通過生成的可執(zhí)行 , 可在 MA TLAB 命令提示符下或其它程 序中調(diào)用 .3 FORTRAN 語(yǔ)言 MEX 文件的實(shí)現(xiàn)FOR TRAN 語(yǔ)言 M EX 文件的實(shí)現(xiàn)步驟和 C/C +語(yǔ)言 M EX 文件大體相同 .3. 1 FOR TRAN 語(yǔ)言 M EX 文件的編寫MA TLAB 提供了 C/C +和 FOR TRAN 兩種 語(yǔ)言的接口 ,

20、 基于 FOR TRAN 語(yǔ)言和前面講到的基 于 C/C +語(yǔ)言的 M EX 文件在實(shí)現(xiàn)方式上相差不 大 . 我們先還是看一下前面程序用 FOR TRAN 語(yǔ)言 M EX 文件來實(shí)現(xiàn)的源程序 .! 示例程序 myplus. f :求兩個(gè)數(shù)之和! 計(jì)算功能子程序subroutine myplus (y ,x ,z ! 變量聲明real 38x ,y ,zy =x +zreturnend! 以下是入口子程序subroutine mexFunction (nlhs ,plhs ,nrhs ,prhs ! 參數(shù)聲明integer nlhs ,nrhs ,plhs (3 ,prhs (3! 調(diào)用 API

21、 庫(kù)函數(shù)的聲明integer mx G et Pr ,mxCreateFullinteger mx G etM ,mx G etN ,mxIsNumeric! 程序內(nèi)部使用變量的聲明945第 26卷 第 6期 陳建平等 MA TLAB 與 C/C +、 FORTRAN 語(yǔ)言混合編程integer xpr ,ypr ,zprinteger mrows ,ncols ,sizereal 38x ,y ,z! 檢查輸入輸出變量個(gè)數(shù)if (nrhs. ne. 2 thencall mexErrMsg Txt ( Two inputs arquired elseif (nlhs. gt. 1 thenc

22、all mexErrMsg Txt ( Too many output argu 2 ments endif! 輸入量必須是兩個(gè)數(shù)mrows =mx G etM (prhs (1 ncols =mx G etN (prhs (1 size =mrows 3ncolsif (mxIsNumeric (prhs (1 . eq. 0 thencall mexErrMsg Txt ( Inputs must be a number endifmrows =mx Gncols =mx G etN size =mrows 3if (mxIsNumeric (prhs (2 . eq. 0 thencal

23、l mexErrMsg Txt ( Inputs must be a number endif! 為輸出參數(shù)創(chuàng)建矩陣plhs (1 =mxCreateFull (mrows ,ncols ,0xpr =mx G et Pr (prhs (1 zpr =mx G et Pr (prhs (2 ypr =mx G et Pr (plhs (1 ! 將數(shù)據(jù)指針轉(zhuǎn)換成雙精度型call mxCopyPtr ToReal8(xpr ,x ,size call mxCopyPtr ToReal8(zpr ,z ,size ! 調(diào)用計(jì)算功能子程序 mypluscall myplus (y ,x ,z ! 將計(jì)

24、算結(jié)果傳給輸出數(shù)據(jù)指針call mxCopyReal8To Ptr (y ,ypr ,size returnend該程序的結(jié)構(gòu)和內(nèi)容與前面 myplus. c 大致相 同 , 也是由兩部分 :一個(gè)計(jì)算功能子例行程序和一個(gè) 入口子例行程序構(gòu)成 , 其程序中參數(shù)和變量大多相 同 , 這里就不一一再介紹了 . 但值得一提的是 , FOR 2 TRAN 和 C/C +語(yǔ)言語(yǔ)法規(guī)則相差較大 , 在 C/C + +語(yǔ)言中對(duì)字符大小寫是敏感的 , 而 FOR TRAN 語(yǔ) 言中大小寫是一樣的 ;C/C +語(yǔ)言中數(shù)組是按行存 儲(chǔ) , 數(shù)組下標(biāo)是從 0開始計(jì)數(shù)的 , 而 FOR TRAN 語(yǔ)言 中數(shù)組是按列存儲(chǔ)

25、 , 數(shù)組下標(biāo)從 1開始 . C/C +語(yǔ) 言幾乎支持所有的數(shù)據(jù)類型 , 支持頭文件 , 操作很靈 活 . 而 FOR TRAN 語(yǔ)言 , 不支持指針 , 參數(shù)傳輸較麻 煩 1.3. 2 FORTRAN 語(yǔ)言 MEX 文件的編譯和 C/C +語(yǔ)言 M EX 文件一樣 , 編譯前需進(jìn)行 編譯器的配置 , 方法同前 , 只是選的編譯器不同 (例如 Compaq Visual Fortran version 6. 6 . 編譯的過程也一 樣 ,MA TLAB6的編譯命令 (不再區(qū)分 C/C +文件 用 cmex. bat ,FOR TRAN 用 fmex. bat 統(tǒng)一使用 mex. bat 批處理

26、命令 , 其后的文件名須帶擴(kuò)展名 .4 MEX 文件的建Studio 的配置前面使用的 mex 文件的使用方式 , 類似在 DOS 下程序開發(fā)方式 , 程序編輯 、 編譯 、 調(diào)試和執(zhí)行分開 , 每次只能創(chuàng)建一個(gè)文件 , 需要來回切換 MA TLAB 命 令窗口和編輯窗口 , 操作較麻煩 . VC 是在 Windows 環(huán)境下的優(yōu)秀開發(fā)平臺(tái) , 將 MA TLAB 和 VC 強(qiáng)強(qiáng)聯(lián) 手 , 無疑是非常好的混合編程方式 . 下面就簡(jiǎn)要介紹 一下如何在 VC 的 IDE (Integrated Development Envi 2 ronment 中編譯 M EX 程序 . 為了表述的方便 , 我

27、們以 MA TLAB6. 5(安裝在 C :matlab6p5 和 Visual C + +6. 0(安裝在 D :Program Files Microsoft Visual Studio 為例 , 可以分為以下 5步 4,5: 用 VC 創(chuàng)建一個(gè)工程 (假定名稱為 myproject , 類型選擇 Win32Dynamic -link Library , 并將自己的 M EX 源程序和 mexversion. rc (在 C :MA TLAB6p5 extern include 下 加入到工程 . 創(chuàng)建一個(gè)與工程同名的定義文件 (myproject. def , 內(nèi)容如下 :L IBRAR

28、 Y myproject. dllEXPOR TS mexFunction(如 果 是 FOR TRAN 該 行 改 為 EXPOR TS -M EXFUNCTION 16并加入定義文件 myproject. def 到工程 定位庫(kù)文件 (. lib 位置 . 具體操作為 :選擇 VC 下拉菜單 Tools/Options , 在彈出的對(duì)話框 Show di 2 rectories for 下拉框中選擇 Library files , 在下部的 Di 2 rectories:中添加 C :MA TLAB6p5extern lib win32microsoft msvc60目錄 . 然后選擇 V

29、C 下拉 菜單 Project/Settings , 在 彈 出 的 對(duì) 話 框 中 選 擇055三 峽 大 學(xué) 學(xué) 報(bào) (自 然 科 學(xué) 版 2004年 12月Link 選項(xiàng)卡 , 在 Category 欄中選擇 general 選項(xiàng) , 在 出現(xiàn)的 Object/library modules :框中填入 libmx. lib , libmex. lib , and libmat. lib. 加入 MA TLAB include 目錄 . 具體操作為 :選 擇 VC 下拉菜單 Tools/Options , 在彈出的對(duì)話框 Show directories for 下拉框中選擇 Include files , 在下 部的 Directories :中添加 C :MA TLAB6p5extern include 目錄 . 然后選擇 VC 下拉菜單 Project/Set 2 tings , 在彈出的對(duì)話框中選擇 C/C +選項(xiàng)卡 , 在 Category 欄中選擇 Preprocessor 選項(xiàng) , 在出現(xiàn)的 Pre 2 processor definitions :框 中 填 入 MA TLAB-M EX -FIL E. 最后就是調(diào)試運(yùn)行配置 . 具體操作為 :選擇 VC 下拉菜單 Project/Settings , 在彈出的對(duì)話框選擇

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論