在TransCAD中如何编译和使用定制的VDF动态链接库_第1页
在TransCAD中如何编译和使用定制的VDF动态链接库_第2页
在TransCAD中如何编译和使用定制的VDF动态链接库_第3页
在TransCAD中如何编译和使用定制的VDF动态链接库_第4页
在TransCAD中如何编译和使用定制的VDF动态链接库_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、在 transcad 中如何编译和使用定制的vdf 动态链接库杨齐caliper 公司transcad 已经有几个现成的流量延误函数(vdf )可供用户在交通分配时选择,其中包括 akcelic flow delay 、bureau of public road (bpr) 、conical congestion 、generalized cost 和 logit delay 函数。 用户还可以自己创建流量延误函数的动态链接库,用来解决特别的交通分配问题。 这里我们用visual studio 2003 版本(所谓的7.0 版)为例(但你也可以用visual studio 6.0 版或 200

2、5 版本,手册中例子在用visual studio 2005 版编译时需要在个别地方作适当修改,如果你是用的是2005 版且需要我们提供更新的文件,请email 与 联系) 。在 microsoft visual studio中创建 vdf 编译环境在 visual studio 2003 选择 filenewproject,创建一个新的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 的编译环境。原先在 gisdkvdf文档里,transcad 已经安装了创建用户自己的vdf 所需要的两个文件 (vdfdll.h和 vdf_preprocessor.c) 和一个 vdf 的例子 ( gc_vdf.c ) 。 下面我们用gc_vdf.c为例,解释如何为transcad 编译你自己vdf 。加载 vdf 程序transcad 使用的动态链接库必须用microsoft visual c 6.0 或以上的版本通过快速(_fastcall )调用协议( argument-calling convention)进行编译。编译好的执行文件必须用后

5、缀为 .vdf 的文件名存放在transcad 程序目录下,以便transcad 自动找到它。这些要求可以通过下列步骤实现:1.在 solution explore 树视窗口下面,在你刚刚生成的vdf project 节点单击鼠标右键,选择 add add existing item ,. 这个命令将弹出add existing item对话框,让你能够选择你自己的vdf 程序文件。请参考 transcad 交通需求模型第10 章“高级交通分配方法”中第1319 页“创建流量延误函数动态链接库”中的介绍来了解如何为transcad 编写定制vdf 的更多信息,这里你将选择实现基于广义成本的vd

6、f 的 gc_vdf.c 文件。鼠标左键双击该文件名,或单击选中文件名后,再单击ok。这个 gc_vdf.c 文件将被加载到你的vdf project 里。打开 gc_vdf.c,在第 242 行作如下改动:short dllexport vdf_getlabel(char *label) strncpy(label, 广义成本函数, vdf_labelsize); return *_platform_tc_status = tc_okay; 这里我们只是把字串“generalized cost function ”换成“广义成本函数”。你自己的vdf 函数当然不只是函数的名称和transca

7、d 程序提供的这个例子中有所不同,你可以进一步修改这个例子,或从头编写你自己的vdf 程序。基本的步骤和要实现的函数在上述模拟手册的有关章节中已经有具体描述,这里不再赘述。设置编译参数1.在 solution explore 树视窗口下面, 鼠标右键单击vdf project 节点,选择 project settings打开项目设置界面。在 general 页面的 output directory 编辑栏, 输入 transcad 程序所在的文档,这可以是相对路径名“ .” ,因为 vdf 文档比 transcad 程序文档低两级。在 debugging 页面的 command 编辑栏输入tr

8、anscad 的执行文件“tcw.exe”所在的路径名。作这项选择与创建vdf 没有关系, 但它可以让你在microsoft visual studio的 ide 环境下进行你的vdf 程序的纠错。2.单击 c/c+ 下的 advanced 页,在 calling convention下拉菜单选则“_fastcall(/gr) ” 。在 linker 下面的 general 页面的 output file 编辑栏,把输出的执行文件的后缀从.dll 改成.vdf。编译和链接vdf 你定制 vdf 函数的程序写好以后,可以用visual studio 的 build build solution

9、命令,快捷键f7,或鼠标点击按钮来进行编译和连接。如果一切顺利,这将在transcad 程序文档中创建一个vdf.vdf 文件和同名但后缀为.lib 和.pdb 等等的文件。对transcad 使用你的vdf 而言,只需保存动态链接库函数vdf.vdf 文件。有关其他文件和更多编译、连接和执行程序的选项,请参阅visual studio 的用户手册。用定制的 vdf 执行 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 (广义成本函数)已经出现delay function 下拉菜单下的选项当中。关于使用 assignment with user vdf程序的更多信息,请参阅transcad 需求模型第 10 章“高级交通分配方法”。在必要时,用visual studio 你可以在自己程序的指定地点设置断点(break points) 。程序执行到你的断点你可以检查输入变量的值,你的程序的流程和返回值。编制自己的vdf时,这样的查错功能往往是很重要的。程序满意以后,你可以将其重新编译成优化的格式(optimized) 。这可以通过visual studio 的 build configuration manager 命令来实现。在configuration manager 对话

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论