链接 c++ 和 ns2 时出错?

error while Linking c++ and ns2?

已完成以下步骤 下载"ex-linkage.cc"文件,保存在"ns-2"目录下。 打开 "Makefile",在目标文件列表末尾添加 "ex-linkage.o"。

使用"make"命令重新编译NS。下载 "ex-linkage.tcl" 文件

包含 "MyAgent" 测试 OTcl 命令。

运行 OTcl 脚本使用命令 "ns ex-linkage.tcl".


我遇到以下错误

$ ./ns ex-linkage.tcl
invalid command name "Agent/MyAgentOtcl" 
    while executing 
"Agent/MyAgentOtcl create o3 " 
    invoked from within 
"catch "$className create $o $args" msg" 
    invoked from within 
"if [catch "$className create $o $args" msg] { 
if [string match "__FAILED_SHADOW_OBJECT" $msg] { 
delete $o 
return "" 
} 
global errorInfo 
error "class $..." 
    (procedure "new" line 3) 
    invoked from within 
"new Agent/MyAgentOtcl" 
    invoked from within 
"set myagent [new Agent/MyAgentOtcl]" 
    (file "ex-linkage.tcl" line 8

»» 无效的命令名称 "Agent/MyAgentOtcl" «« :看起来您正在使用没有 "Linkage".

的可执行文件 'ns'
tar xvf ns-allinone-2.35_gcc482.tar.gz

https://drive.google.com/file/d/0B7S255p3kFXNSGJCZ2YzUGJDVk0/view?usp=sharing

cd ns-allinone-2.35/
patch -p0 < linkage_ns235.patch

https://drive.google.com/file/d/0B7S255p3kFXNYmZ0SWFQaUNhWTA/view?usp=sharing

./install
cd ns-2.35/
sudo make install
cp ns ns235-linkage
sudo cp ns235-linkage /usr/local/bin/

Simulation : ns235-linkage ex-linkage.tcl
.
warning: no class variable Agent/MyAgentOtcl::my_var2_otcl
.
Message From MyPrivFunc
     my_var1 = 2
     my_var2 = 3.140000

使用 "ns235-linkage" 命令确保您使用的是正确的 'ns'。 P.S。 : 你不是用 'make' 重新编译,而是用 'make clean && make' 重新编译。或者通过运行 './install' 在顶级目录ns-allinone-2.35/.



好的,Cygwin。 (为什么隐藏重要信息http://www.catb.org/~esr/faqs/smart-questions.html)。

补丁命令:安装 'patch',或安装 'Developer tools'(如果可用)。

您可以使用 ns-allinone-2 附带的 {ns-2.35/}。35_gcc482.tar.gz , 并使用其他安装的 Cygwin {tcl8, tk8, otcl, tclcl}.

除此之外,补丁仅包含两个文件 ex-linkage.*,以及 Makefile.in 的一行。该补丁应该会让事情变得更容易。

使用:在保存 ns-2.35/ 的文件夹中复制 "linkage_ns235.patch",然后执行 $ patch -p0 < linkage_ns235.patch



好的,您的 cygwin 中似乎没有可用的补丁功能。

可能是您之前的设置没问题,您只需要重新编译即可:

$ cd ns-2.35/ && make clean && make