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

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

Your Ad Here  
1              编译winnam.dll
1)        创建winnam.dll工程,记住选上“导出符号”。
2)        将工程的输出路径改为:$(SolutionDir)\Debug。原因:将所有生成的dll和exe放在同一目录下,避免产生找不到文件的情况。
3)        将中间目录改为:$(SolutionDir)\Debug\winnam。原因:个人喜爱。
4)        在“C/C++ -> 附加包含目录”中添加:
"D:\ns-allinone-2.31\nam-1.13";   // 注意此目录应该排在最前面
"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)        将nam-1.13目录的所有文件添加到工程中。
9)        从工程中删除如下文件:
xwd.c
xwd.h
main.cc
win32.c
getopt.c
10)     打开rng.cc,添加如下函数
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;
}
11)     打开nam_stream.cc,添加定义:
#define die(str) exit(1)
12)     将wintcl.dll、wintk.dll、winotcl.dll、wincl.dll、winns.dll设置为此项目的依赖项目。
13)     编译工程,生成winnam.dll
若在编译中出现pow函数的错误可在参数前加(double)强制转换即可。
出现如下错误:
d:\ns-allinone-2.31\nam-1.13\netmodel.cc(311) : error C2100: 非法的间接寻址
将本行程序
     return *Tcl_GetHashValue(he);
改为
     return *(int*)Tcl_GetHashValue(he);
 
2              编译namsh.exe
1)        创建namsh.exe工程,类型为命令行程序,选择空项目选项。
2)        在工程中添加以下文件:
D:\ns-allinone-2.31\nam-1.13\main.cc
D:\ns-allinone-2.31\nam-1.13\getopt.c
D:\ns-allinone-2.31\nam-1.13\win32.c
3)        将工程的输出路径改为:$(SolutionDir)\Debug。原因:将所有生成的dll和exe放在同一目录下,避免产生找不到文件的情况。
4)        将中间目录改为:$(SolutionDir)\Debug\nssh。原因:个人喜爱。
5)        在“C/C++ -> 附加包含目录”中添加:
..\winnam;
"D:\ns-allinone-2.31\nam-1.13";   // 注意此目录应该排在最前面
"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)        打开parser.h,在ParserTable类前加上WINNAM_API进行导出。
9)        打开paint.h,在Paint类前加上WINNAM_API进行导出。
10)     打开state.h,在State类前加上WINNAM_API进行导出。
11)     打开main.cc,在platformInit函数声明前加上extern C
12)     打开main.cc,找到如下行:
#if 0
     if (Tcl_Init(interp) == TCL_ERROR) {
         printf("%s\n", interp->result);
         abort();
     }
#endif
将之改为:
//#if 0
     Tcl_FindExecutable(argv[0]);
     if (Tcl_Init(interp) == TCL_ERROR) {
         printf("%s\n", interp->result);
         abort();
     }
//#endif
再找到如下两行:
#ifdef WIN32
     Tcl_SetVar(interp, "tcl_library", ".", TCL_GLOBAL_ONLY);
     Tcl_SetVar(interp, "tk_library", ".", TCL_GLOBAL_ONLY);
#endif
将之改为:
#ifdef WIN32
     //Tcl_SetVar(interp, "tcl_library", ".", TCL_GLOBAL_ONLY);
     //Tcl_SetVar(interp, "tk_library", ".", TCL_GLOBAL_ONLY);
#endif
13)     打开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文件并将之添加到工程中。
14)     将wintcl.dll、wintk.dll、winotcl.dll、wincl.dll、winns.dll、winnam.dll设置为此项目的依赖项目。
15)     在“链接器->输入->附加依赖项”中添加Ws2_32.lib
16)     将wintcl.dll tclsh.exe tcl2c.exe三个文件复制到nam-1.13目录下,打开cmd.exe并切换到nam-1.13目录,执行命令:
tclsh bin/string2c.tcl version > version.c
在提示符下输入2.31,生成version.c文件,将之添加到工程中。
执行命令:
tclsh bin/tcl-expand.tcl tcl/nam-lib.tcl | tcl2c et_nam > nam_tcl.cc
生成nam_tcl.cc,将之添加到工程中。
进入tk8.4.14\library目录,运行如下命令:
tcl2c et_tk tk.tcl clrpick.tcl comdlg.tcl button.tcl dialog.tcl entry.tcl focus.tcl listbox.tcl menu.tcl palette.tcl scale.tcl tearoff.tcl text.tcl tkfbox.tcl msgbox.tcl
  > embedded-tk.cc
生成embedded-tk.cc,将之复制到nam目录下并添加到工程中。
17)     编译运行,如果运行过程中出现变量未初始化的错误,没关系,找到那个变量的定义将它初始化为0即可。
18)     打开lantest.nam,呵呵,好好享受吧!
 
有道 值得一道:【上一篇】
在vs.net 2003中编译ns2(5):编译ns2:【下一篇】
【相关文章】
  • WIN2003下Web服务器配置(实现WAP应用)
  • Windows2003下DNS架设攻略(图)
  • Win2003下Mail服务器全攻略(图)
  • EVC4.0安装说明,开发ppc2003
  • vs.net2003下配置openSG
  • Smartphone2003不支持打开/保存文件对话框
  • 部署数据源却提示javax.naming.NameNotFoundException
  • 不知道是不是VS.NET 2003的bug
  • SharpICTCLAS分词系统简介(3)DynamicArray
  • WinXP下Cygwin和NS2.28的安装实验记录
  • 【随机文章】
  • Oracle备份与恢复案例.rar
  • OpenSolaris邮件列表中关于系统调用的讨论
  • 利用mediaplayer打造自己的mp3播放器续
  • White Paper Cisco快速转发 (CEF)
  • Swing and SWT: A Tale of Two Java GUI Libraries
  • JSF下如何实现输完密码回车后直接提交?
  • CCNP学习笔记BSCI之-OSPF篇
  • 注册服务器
  • dddddddddddddddddddddd
  • 《MS SQL Server 2000管理员手册》系列——15. 使用Transact-SQL和Enterprise Manager管理数据表
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 bbb软讯网络 All Rigths Reserved.