Your Ad Here
首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 软件时空 > 软件相关 > 在vs.net 2003中编译ns2(1):编译tcl
【标  题】:在vs.net 2003中编译ns2(1):编译tcl
【关键字】:vs.net,2003,ns2,tcl
【来  源】:http://blog.csdn.net/lights_joy/archive/2007/04/07/1555511.aspx

在vs.net 2003中编译ns2(1):编译tcl

Your Ad Here  
NS是一种针对网络技术的源代码公开的、免费的软件模拟平台,研究人员使用它可以很容易的进行网络技术的开发,而且发展到今天,它所包含的模块已经非常丰富,几乎涉及到了网络技术的所有方面。所以,NS成了目前学术界广泛使用的一种网络模拟软件。在每年国内外发表的有关网络技术的学术论文中,利用NS给出模拟结果的文章最多,通过这种方法得出的研究结果也是被学术界所普遍认可的,此外,NS也可作为一种辅助教学的工具,已被广泛应用在了网络技术的教学方面。因此,目前在学术界和教育界,有大量的人正在使用或试图使用NS。
然而,对初学者来说,NS是非常难于掌握的,一般人从学习NS到上手至少需要半年多时间。原因是多方面的:一方面,NS内容庞杂,随软件所提供的手册更新不够快,初学者阅读起来非常困难;另一方面,使用NS还要掌握其它很多必备的相关知识以及相关工具,这会使初学者感到无从入手;有的使用者可能还不了解网络模拟的过程或是对NS软件的机制缺乏理解,这也影响了对NS的掌握。另外,不论在国外还是国内,还没有一本书能集中回答和解决这些问题,这也是NS难于被掌握的一个重要原因。
(上两段为抄袭,呵呵)
本文主要用于解决在vs.net 2003 ide下编译ns2的问题。
首先在ns-all-inone-2.31目录下创建一个vs2003的Solution,以下如无特别说明,$(SolutionDir)均指D:\ns-allinone-2.31\vs2003
1.1    编译wintcl.dll
1、 创建wintcl.dll工程。
2、 删除wintcl.cpp(自动生成的文件)中的DllMain函数。原因:tcl提供了此函数。
3、 将工程的输出路径改为:$(SolutionDir)\Debug。原因:将所有生成的dll和exe放在同一目录下,避免产生找不到文件的情况。
4、 将中间目录改为:$(SolutionDir)\Debug\wintcl。原因:个人喜爱。
5、 在“C/C++ -> 附加包含目录”中添加:
"D:\ns-allinone-2.31\tcl8.4.14\generic";
"D:\ns-allinone-2.31\tcl8.4.14\win"
6、 将“C/C++ -> 代码生成 -> 运行时库”改为“多线程调试DLL”。原因:避免C运行时库链接错误。
7、 在“C/C++ ->预处理器”中添加Build_tcl的宏定义。原因:这样可以导出符号。
8、 在“C/C++ ->预编译头”中改为“自动生成”。原因:避免#include “stdafx.h”。
9、 将tcl8.4.14\generic; tcl8.4.14\win; tcl8.4.14\compat; 3个目录下.c和.h文件添加到工程中。
10、              从工程中删除以下文件:
compat:
tmpnam.c
opendir.c
memcmp.c
strstr.c
strtoul.c
strtol.c
strtod.c
waitpid.c
generic:
rege_dfa.c
regc_nfa.c
regc_locale.c
regc_lex.c
regc_cvec.c
regc_color.c
tclLoadNone.c
regfronts.c
win:
nmakehlp.c
cat.c
stub16.c
tclAppInit.c
11、              打开tcl.h,添加
#ifdef Build_tcl
#define WINTCL_API __declspec(dllexport)
#else
#define WINTCL_API __declspec(dllimport)
#endif
#define TCL_PIPE_DLL "1" 
TCL_PIPE_DLL实际上应该指向一个pip*.dll这样的文件名,实际这个文件不存在也没有关系,因此任意定义了一个字符串。
在tcl.h中找到EXTERN的定义并注释掉这些代码:
/*
 * Make sure EXTERN isn't defined elsewhere
 */
#ifdef EXTERN
#   undef EXTERN
#endif /* EXTERN */
 
#ifdef __cplusplus
#   define EXTERN extern "C" TCL_STORAGE_CLASS
#else
#   define EXTERN extern TCL_STORAGE_CLASS
#endif
在工程中搜索EXTERN并将之替换为WINTCL_API。记住务必使用大小写匹配和全字匹配。
原因:EXTERN这个名字太普通了,会造成很在的困扰。
  12、 打开tclDecls.h,查找
extern TclStubs *tclStubsPtr;
将之改为extern WINTCL_API TclStubs *tclStubsPtr;
13、 打开tclStubLib.c,查找
TclStubs *tclStubsPtr = NULL;
将之改为:
WINTCL_API TclStubs *tclStubsPtr = NULL;
14、              编译工程,生成wintcl.dll
1.2    编译tclsh.exe
1、 创建tclsh.exe工程,类型为命令行程序,选择空项目选项。
2、 在工程中添加以下文件:
D:\ns-allinone-2.31\tcl8.4.14\win\tclAppInit.c
3、 将工程的输出路径改为:$(SolutionDir)\Debug。原因:将所有生成的dll和exe放在同一目录下,避免产生找不到文件的情况。
4、 将中间目录改为:$(SolutionDir)\Debug\tclsh。原因:个人喜爱。
5、 在“C/C++ -> 附加包含目录”中添加:
"D:\ns-allinone-2.31\tcl8.4.14\generic";
"D:\ns-allinone-2.31\tcl8.4.14\win"
6、 将“C/C++ -> 代码生成 -> 运行时库”改为“多线程调试DLL”。原因:避免C运行时库链接错误。
7、 在“C/C++ ->预编译头”中改为“自动生成”。原因:避免#include “stdafx.h”。
8、 将wintcl.dll设置为此项目的依赖项目。
9、 在Windows系统环境中添加一个变量:
TCL_LIBRARY:D:\ns-allinone-2.31\tcl8.4.14\library
10、              编译运行
11、              在TCL命令行下运行测试tcl:
cd tcl8.4.14
cd tests
source all.tcl
  
1.3      生成html文档
运行tclsh,运行以下命令:
cd tcl8.4.14
cd tools
source tcltk-man2html.tcl
完成之后将在tcl8.4.14目录下生成html目录,其中就包含了HTML文档。
中国部分黑客资料:【上一篇】
增加反向链接的101个方法:【下一篇】
【相关文章】
  • 在vs.net 2003中编译ns2(2):编译tk
  • 在vs.net 2003中编译ns2(3):编译otcl
  • 2003年起国内七家单位可查看微软操作系统源代码
  • 在vs.net 2003中编译ns2(5):编译ns2
  • 在vs.net 2003中编译ns2(6):编译nam
  • WIN2003下Web服务器配置(实现WAP应用)
  • Windows2003下DNS架设攻略(图)
  • Win2003下Mail服务器全攻略(图)
  • EVC4.0安装说明,开发ppc2003
  • vs.net2003下配置openSG
  • 【随机文章】
  • 生活哲理
  • Find命令使用实例
  • 从瀑布型开发到迭代型开发的转变
  • PHP重定向
  • 如何在图形登录和命令行登录方式间切换
  • solaris 开始是否进入图形界面选择
  • 单机上配置9i standby
  • uml 模型管理视图包间的依赖关系
  • 自编辑Compiere2.53b系统
  • ANSI C中取得结构体字段偏移值的惯用法
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.