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

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

Your Ad Here  
1              编译winns.dll
1)        创建winns.dll工程,记住选上“导出符号”。
2)        将工程的输出路径改为:$(SolutionDir)\Debug。原因:将所有生成的dll和exe放在同一目录下,避免产生找不到文件的情况。
3)        将中间目录改为:$(SolutionDir)\Debug\wintcl。原因:个人喜爱。
4)        在“C/C++ -> 附加包含目录”中添加:
"D:\ns-allinone-2.31\tcl8.4.14\generic";
"D:\ns-allinone-2.31\tcl8.4.14\win";
"D:\ns-allinone-2.31\tk8.4.14\generic";
"D:\ns-allinone-2.31\tk8.4.14\win";
"D:\ns-allinone-2.31\tk8.4.14\xlib";
"D:\ns-allinone-2.31\otcl-1.13";
"D:\ns-allinone-2.31\tclcl-1.19";
"D:\ns-allinone-2.31\ns-2.31";
"D:\ns-allinone-2.31\ns-2.31\common";
"D:\ns-allinone-2.31\ns-2.31\mobile";
"D:\ns-allinone-2.31\ns-2.31\tools";
"D:\ns-allinone-2.31\ns-2.31\queue";
"D:\ns-allinone-2.31\ns-2.31\tcp";
"D:\ns-allinone-2.31\ns-2.31\apps";
"D:\ns-allinone-2.31\ns-2.31\trace";
"D:\ns-allinone-2.31\ns-2.31\mac";
"D:\ns-allinone-2.31\ns-2.31\routing";
"D:\ns-allinone-2.31\ns-2.31\link";
"D:\ns-allinone-2.31\ns-2.31\classifier";
"D:\ns-allinone-2.31\ns-2.31\sctp";
"D:\ns-allinone-2.31\ns-2.31\mcast";
"D:\ns-allinone-2.31\ns-2.31\qs";
"D:\ns-allinone-2.31\ns-2.31\adc";
"D:\ns-allinone-2.31\ns-2.31\satellite";
 “.”;
“..\winotcl”;
“..\wincl”;
 
5)        将“C/C++ -> 代码生成 -> 运行时库”改为“多线程调试DLL”。原因:避免C运行时库链接错误。
6)        将“C/C++ -> 预处理器定义”中添加HAVE_STL。
7)        在“C/C++ ->预编译头”中改为“自动生成”。原因:避免#include “stdafx.h”。
8)        将下述目录的所有文件添加到工程中。
ns-2.31
ns-2.31\adc
ns-2.31\aodv
ns-2.31\apps
ns-2.31\asim
ns-2.31\baytcp
ns-2.31\classifier
ns-2.31\common
ns-2.31\delaybox
ns-2.31\diffserv
ns-2.31\diffusion
ns-2.31\dsdv
ns-2.31\dsr
ns-2.31\empweb
ns-2.31\gaf
ns-2.31\imep
ns-2.31\lib
ns-2.31\link
ns-2.31\linkstate
ns-2.31\mac
ns-2.31\mcast
ns-2.31\mobile
ns-2.31\mpls
ns-2.31\nix
ns-2.31\packmime
ns-2.31\pgm
ns-2.31\plm
ns-2.31\pushback
ns-2.31\qs
ns-2.31\queue
ns-2.31\rap
ns-2.31\realaudio
ns-2.31\routealgo
ns-2.31\routing
ns-2.31\rtproto
ns-2.31\satellite
ns-2.31\sctp
ns-2.31\src_rtg
ns-2.31\tcp
ns-2.31\tools
ns-2.31\tora
ns-2.31\trace
ns-2.31\webcache
ns-2.31\wpan
 
9)        从工程中删除如下文件:
ns-2.31\
ns_tclsh.cc
ns-2.31\sctp
sctp-newreno.cc
sctp-newreno.h
ns-2.31\mcast
rlm.cc
ns-2.31\mac
mac-multihop.cc
mac-csma.cc
mac-csma.h
ns-2.31\common
win32.c
tclAppInit.cc
tkAppInit.cc
ptypes2tcl.cc
ns-2.31\asim
asimstd.cc
10)     打开queue\jobs.cc,在文件头添加
#include <float.h>
#undef INFINITY
# define INFINITY DBL_MAX
11)     打开autoconf-win32.h,在最后添加两行
#include <ostream>
using namespace std;
#define drand48() ((double)rand()/RAND_MAX)
#define MIN(a, b) ((a) > (b) ? (b) : (a))
#define MAX(a, b) ((a) > (b) ? (a) : (b))
12)     打开nix\nixvec.h,注释以下3行
#ifdef WIN32
#include <pair.h>   // for MSVC 6.0 that doens't have a proper <utility>
#endif /* WIN32 */
13)     打开tcp\tcp-fs.cc和tcp\tcp-fack.cc,在文件前加上两行
#undef max
#define max(a, b) ((a) > (b) ? (a) : (b))
14)     打开common\misc.cc,查找init_misc函数,在其前加上WINNS_API进行导出。
15)     在“链接器->输入->附加依赖项”中添加Ws2_32.lib
16)     将wintcl.dll、wintk.dll、winotcl.dll、wincl.dll设置为此项目的依赖项目。
17)     打开config.h,找到如下行
int gettimeofday(struct timeval *p, struct timezone *z);
将之改为:
#include <sys/timeb.h>
inline int gettimeofday(struct timeval *p, struct timezone *z)
{
     struct timeb tb;
     ftime(&tb);
     p->tv_sec = tb.time;
     p->tv_usec = tb.millitm;
     return 0;
}
18)     打开config.h,找到如下行:
     extern int snprintf(char *buf, int size, const char *fmt, ...);
将之改为:
#define snprintf _snprintf
19)     打开config.h,打开如下行:
#define MEMDEBUG_SIMULATIONS
将之注释掉。
20)     将wintcl.dll tclsh.exe tcl2c.exe三个文件复制到ns-2.31目录下,打开cmd.exe并切换到ns-2.31目录,执行命令:
tclsh bin/string2c.tcl version_string > version.c
在提示符下输入2.31,生成version.c文件,将之添加到工程中。
21)     由于VC中没有erf和erfc函数,因此在编译packmime_HTTP_rng.cc时会出现错误,可从网上找一个实现函数添加到工程中即可。
22)     编译工程,生成ns2.dll
23)     若在编译中出现如下所示的错误:
d:\ns-allinone-2.31\ns-2.31\tools\rng.h(303) : error C2666: “pow” : 7 个重载有相似的转换
只要将pow中的参数前加上(double)进行强制转换即可,log的错误提示也同样处理。
d:\ns-allinone-2.31\ns-2.31\wpan\p802_15_4mac.h(601) : error C2632: “bool”后面的“char”非法
将small替换为var_small
d:\ns-allinone-2.31\ns-2.31\tools\rng.cc(285) : error C2065: “RNGTest” : 未声明的标识符
将此行前面的#if 0前的注释去除,相应的#endif前的注释也去除。
d:\ns-allinone-2.31\ns-2.31\tools\flowmon.cc(169) : error C2146: 语法错误 : 缺少“)”(在标识符“STRTOI64_FMTSTR”的前面)
将出现的几个宏均替换为%ld
d:\ns-allinone-2.31\ns-2.31\mobile\gridkeeper.cc(11) : fatal error C1083: 无法打开包含文件:“sys/param.h”: No such file or directory
直接注释掉这行#include 语句,因此MIN, MAX的定义已经放在autoconf-win32.h中了。
d:\ns-allinone-2.31\ns-2.31\packmime\packmime_OL.cc(112) : error C2664: “void TclObject::bind(const char *,TracedInt *)” : 不能将参数 2 从“int64_t *__w64 转换为“TracedInt *
        与指向的类型无关;转换要求 reinterpret_cast、C 样式转换或函数样式转换
将此行修改为:     bind("maxpkts_", (int*)&maxpkts_);
 
2              编译nssh.exe
1)        创建nssh.exe工程,类型为命令行程序,选择空项目选项。
2)        在工程中添加以下文件:
D:\ns-allinone-2.31\ns-2.31\ns-tclsh.cc
3)        将工程的输出路径改为:$(SolutionDir)\Debug。原因:将所有生成的dll和exe放在同一目录下,避免产生找不到文件的情况。
4)        将中间目录改为:$(SolutionDir)\Debug\nssh。原因:个人喜爱。
5)        在“C/C++ -> 附加包含目录”中添加:
"D:\ns-allinone-2.31\tcl8.4.14\generic";
"D:\ns-allinone-2.31\tcl8.4.14\win";
"D:\ns-allinone-2.31\tk8.4.14\generic";
"D:\ns-allinone-2.31\tk8.4.14\win";
"D:\ns-allinone-2.31\tk8.4.14\xlib";
"D:\ns-allinone-2.31\otcl-1.13";
"D:\ns-allinone-2.31\tclcl-1.19";
"D:\ns-allinone-2.31\ns-2.31";
"D:\ns-allinone-2.31\ns-2.31\common";
"D:\ns-allinone-2.31\ns-2.31\mobile";
"D:\ns-allinone-2.31\ns-2.31\tools";
"D:\ns-allinone-2.31\ns-2.31\queue";
"D:\ns-allinone-2.31\ns-2.31\tcp";
"D:\ns-allinone-2.31\ns-2.31\apps";
"D:\ns-allinone-2.31\ns-2.31\trace";
"D:\ns-allinone-2.31\ns-2.31\mac";
"D:\ns-allinone-2.31\ns-2.31\routing";
"D:\ns-allinone-2.31\ns-2.31\link";
"D:\ns-allinone-2.31\ns-2.31\classifier";
"D:\ns-allinone-2.31\ns-2.31\sctp";
"D:\ns-allinone-2.31\ns-2.31\mcast";
"D:\ns-allinone-2.31\ns-2.31\qs";
"D:\ns-allinone-2.31\ns-2.31\adc";
"D:\ns-allinone-2.31\ns-2.31\satellite";
 “.”;
“..\winotcl”;
“..\wincl”;
6)        将“C/C++ -> 代码生成 -> 运行时库”改为“多线程调试DLL”。原因:避免C运行时库链接错误。
7)        在“C/C++ ->预编译头”中改为“自动生成”。原因:避免#include “stdafx.h”。
8)        打开ns_tclsh.cc,查找如下行:
extern init_misc();
将之改为:
extern void init_misc();
去掉extern “C”
9)        打开cmd.exe,并切换到ns-2.31目录,运行如下命令:
tclsh bin/tcl-expand.tcl tcl/lib/ns-lib.tcl | tcl2c et_ns_lib > ns_tcl.cc
生成ns_tcl.cc文件并将之添加到工程中。
10)     将wintcl.dll、wintk.dll、winotcl.dll、wincl.dll、winns.dll设置为此项目的依赖项目。
11)     在系统环境变量中添加nshome,将其值设置为D:\ns-allinone-2.31\ns-2.31。
编译运行 
在vs.net 2003中编译ns2(6):编译nam:【上一篇】
关于多播传输速率与可靠性之间的矛盾:【下一篇】
【相关文章】
  • 在vs.net 2003中编译ns2(6):编译nam
  • WIN2003下Web服务器配置(实现WAP应用)
  • Windows2003下DNS架设攻略(图)
  • Win2003下Mail服务器全攻略(图)
  • EVC4.0安装说明,开发ppc2003
  • vs.net2003下配置openSG
  • Smartphone2003不支持打开/保存文件对话框
  • 不知道是不是VS.NET 2003的bug
  • WinXP下Cygwin和NS2.28的安装实验记录
  • 基于EVC++ VS.net2005判断指定日期的星期又一法
  • 【随机文章】
  • 如何在 Windows 2000 中为 SNMP 服务配置网络安全性
  • SqlDbType 与 .Net 数据类型对照表
  • PS视频教程:曲线(1)
  • 《五项核心度量》笔记2-与UML有关的阐述
  • DB2创建表的异常
  • 常用函数速查
  • C#数据库编程总结
  • myisamchk进行表的维护和崩溃恢复
  • apache+mod ssl 如何申请正式SSL证书
  • 隐藏下载地址
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.