在TransCAD中如何編譯和使用定制的VDF動態(tài)鏈接庫_第1頁
在TransCAD中如何編譯和使用定制的VDF動態(tài)鏈接庫_第2頁
在TransCAD中如何編譯和使用定制的VDF動態(tài)鏈接庫_第3頁
在TransCAD中如何編譯和使用定制的VDF動態(tài)鏈接庫_第4頁
在TransCAD中如何編譯和使用定制的VDF動態(tài)鏈接庫_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、在 transcad 中如何編譯和使用定制的vdf 動態(tài)鏈接庫楊齊caliper 公司transcad 已經有幾個現(xiàn)成的流量延誤函數(shù)(vdf )可供用戶在交通分配時選擇,其中包括 akcelic flow delay 、bureau of public road (bpr) 、conical congestion 、generalized cost 和 logit delay 函數(shù)。 用戶還可以自己創(chuàng)建流量延誤函數(shù)的動態(tài)鏈接庫,用來解決特別的交通分配問題。 這里我們用visual studio 2003 版本(所謂的7.0 版)為例(但你也可以用visual studio 6.0 版或 200

2、5 版本,手冊中例子在用visual studio 2005 版編譯時需要在個別地方作適當修改,如果你是用的是2005 版且需要我們提供更新的文件,請email 與 聯(lián)系) 。在 microsoft visual studio中創(chuàng)建 vdf 編譯環(huán)境在 visual studio 2003 選擇 filenewproject,創(chuàng)建一個新的project。選擇general custom winzard 。 在name 編 輯 欄輸 入vdf , 在location編 輯 欄輸入“c:program filestranscadvgisdk ” ,如下圖所示:這里我們假定你的transcad 是安

3、裝在“ c:program filestranscad ”下面,而你自己的 vdf 文件要存儲在它下面的gisdk 文檔里面。單擊 ok ,彈出的下一個application settings 對話框。單擊 application settings 顯示應用程序定制界面。在 application type 單選列表選擇dll類型。在 additional options選擇 empty project 。最后點擊finish。visual studio 在你指定的“c:program filestranscadgisdk ”下面的vdf 文檔里生成幾個文件,其中最重要的是vdf.vproj

4、文件。你后面將在這個文件中定義定制vdf 的編譯環(huán)境。原先在 gisdkvdf文檔里,transcad 已經安裝了創(chuàng)建用戶自己的vdf 所需要的兩個文件 (vdfdll.h和 vdf_preprocessor.c) 和一個 vdf 的例子 ( gc_vdf.c ) 。 下面我們用gc_vdf.c為例,解釋如何為transcad 編譯你自己vdf 。加載 vdf 程序transcad 使用的動態(tài)鏈接庫必須用microsoft visual c 6.0 或以上的版本通過快速(_fastcall )調用協(xié)議( argument-calling convention)進行編譯。編譯好的執(zhí)行文件必須用后

5、綴為 .vdf 的文件名存放在transcad 程序目錄下,以便transcad 自動找到它。這些要求可以通過下列步驟實現(xiàn):1.在 solution explore 樹視窗口下面,在你剛剛生成的vdf project 節(jié)點單擊鼠標右鍵,選擇 add add existing item ,. 這個命令將彈出add existing item對話框,讓你能夠選擇你自己的vdf 程序文件。請參考 transcad 交通需求模型第10 章“高級交通分配方法”中第1319 頁“創(chuàng)建流量延誤函數(shù)動態(tài)鏈接庫”中的介紹來了解如何為transcad 編寫定制vdf 的更多信息,這里你將選擇實現(xiàn)基于廣義成本的vd

6、f 的 gc_vdf.c 文件。鼠標左鍵雙擊該文件名,或單擊選中文件名后,再單擊ok。這個 gc_vdf.c 文件將被加載到你的vdf project 里。打開 gc_vdf.c,在第 242 行作如下改動:short dllexport vdf_getlabel(char *label) strncpy(label, 廣義成本函數(shù), vdf_labelsize); return *_platform_tc_status = tc_okay; 這里我們只是把字串“generalized cost function ”換成“廣義成本函數(shù)”。你自己的vdf 函數(shù)當然不只是函數(shù)的名稱和transca

7、d 程序提供的這個例子中有所不同,你可以進一步修改這個例子,或從頭編寫你自己的vdf 程序?;镜牟襟E和要實現(xiàn)的函數(shù)在上述模擬手冊的有關章節(jié)中已經有具體描述,這里不再贅述。設置編譯參數(shù)1.在 solution explore 樹視窗口下面, 鼠標右鍵單擊vdf project 節(jié)點,選擇 project settings打開項目設置界面。在 general 頁面的 output directory 編輯欄, 輸入 transcad 程序所在的文檔,這可以是相對路徑名“ .” ,因為 vdf 文檔比 transcad 程序文檔低兩級。在 debugging 頁面的 command 編輯欄輸入tr

8、anscad 的執(zhí)行文件“tcw.exe”所在的路徑名。作這項選擇與創(chuàng)建vdf 沒有關系, 但它可以讓你在microsoft visual studio的 ide 環(huán)境下進行你的vdf 程序的糾錯。2.單擊 c/c+ 下的 advanced 頁,在 calling convention下拉菜單選則“_fastcall(/gr) ” 。在 linker 下面的 general 頁面的 output file 編輯欄,把輸出的執(zhí)行文件的后綴從.dll 改成.vdf。編譯和鏈接vdf 你定制 vdf 函數(shù)的程序寫好以后,可以用visual studio 的 build build solution

9、命令,快捷鍵f7,或鼠標點擊按鈕來進行編譯和連接。如果一切順利,這將在transcad 程序文檔中創(chuàng)建一個vdf.vdf 文件和同名但后綴為.lib 和.pdb 等等的文件。對transcad 使用你的vdf 而言,只需保存動態(tài)鏈接庫函數(shù)vdf.vdf 文件。有關其他文件和更多編譯、連接和執(zhí)行程序的選項,請參閱visual studio 的用戶手冊。用定制的 vdf 執(zhí)行 transcad 交通分配程序編譯和鏈接無誤以后,可以用visual studio 的 debugstart 命令或快捷鍵f5 啟動transcad. 。 遵照屏幕的提示, 進入 transcad 以后,打開 transca

10、d 程序文件夾下的tutorial文檔中的 workspace 文件“ traffic assign.wrk ” 。transcad 將打開一個地圖、矩陣和相應的網絡。選擇 transcad 的 planningadvanced assignment assignment with user vdf命令,打開 assignment with user vdf對話框:注意到你的vdf (廣義成本函數(shù))已經出現(xiàn)delay function 下拉菜單下的選項當中。關于使用 assignment with user vdf程序的更多信息,請參閱transcad 需求模型第 10 章“高級交通分配方法”。在必要時,用visual studio 你可以在自己程序的指定地點設置斷點(break points) 。程序執(zhí)行到你的斷點你可以檢查輸入變量的值,你的程序的流程和返回值。編制自己的vdf時,這樣的查錯功能往往是很重要的。程序滿意以后,你可以將其重新編譯成優(yōu)化的格式(optimized) 。這可以通過visual studio 的 build configuration manager 命令來實現(xiàn)。在configuration manager 對話

溫馨提示

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

評論

0/150

提交評論