现在的位置: 首页 > 综合 > 正文

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

2013年09月16日 ⁄ 综合 ⁄ 共 2465字 ⁄ 字号 评论关闭
 

1              编译tcl2c.exe
1)        创建tcl2c.exe工程,类型为命令行程序,选择空项目选项。
2)        在工程中添加以下文件:
D:/ns-allinone-2.31/tclcl-1.19/tcl2c++.c
3)        将工程的输出路径改为:$(SolutionDir)/Debug。原因:将所有生成的dll和exe放在同一目录下,避免产生找不到文件的情况。
4)        将中间目录改为:$(SolutionDir)/Debug/tcl2c。原因:个人喜爱。
5)        将“C/C++ -> 代码生成 -> 运行时库”改为“多线程调试DLL”。原因:避免C运行时库链接错误。
6)        在“C/C++ ->预编译头”中改为“自动生成”。原因:避免#include “stdafx.h”。
7)        编译生成tcl2c.exe
2              编译wincl.dll
1)        创建wincl.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";
“.”;
“../winotcl”;
5)        将“C/C++ -> 代码生成 -> 运行时库”改为“多线程调试DLL”。原因:避免C运行时库链接错误。
6)        在“C/C++ ->预编译头”中改为“自动生成”。原因:避免#include “stdafx.h”。
7)        在“链接器->输入->附加依赖项”中添加Ws2_32.lib
8)        将tclcl-1.19目录下的所有文件添加到工程中。
9)        将tclcl-1.19/compat/下的两个文件添加到工程中。
10)     从工程中删除下述文件
tcl2c++.c
tclAppInit.cc
tkAppInit.cc
11)     打开工程中的头文件,添加
#include "wincl.h"
将“class”全部替换为“class WINCL_API”,用以导出类的定义。
12)     将config.h改名为wincl_config.h,避免在后面的编译中制造麻烦。
13)     在项目中搜索config.h,全部改为wincl_config.h。
14)     在项目中搜索tclcl-wincl_config.h,全部替换为tclcl-config.h
15)     打开wincl_config.h,注释掉以下行
#define HAVE_INT64 1
#define HAVE_SNPRINTF 1
16)     将tcl2c.exe复制到tclcl-1.19目录下,打开cmd.exe,转到tclcl-1.19目录,运行如下命令:
tcl2c et_tclobject tcl-object.tcl tcl-import.tcl tcl-http.tcl > embedded-tclobj.cc
此命令并生成一个embedded-tclobj.cc文件,将此文件添加到工程中。
17)     将wintcl.dll、wintk.dll、winotcl.dll设置为此项目的依赖项目。
18)     编译工程,生成wincl.dll
3              编译clsh.exe
1)        创建clsh.exe工程,类型为命令行程序,选择空项目选项。
2)        在工程中添加以下文件:
D:/ns-allinone-2.31/tclcl-1.19/tclAppInit.c
3)        将工程的输出路径改为:$(SolutionDir)/Debug。原因:将所有生成的dll和exe放在同一目录下,避免产生找不到文件的情况。
4)        将中间目录改为:$(SolutionDir)/Debug/otclsh。原因:个人喜爱。
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";
“../winotcl”;
“../wincl”;
6)        将“C/C++ -> 代码生成 -> 运行时库”改为“多线程调试DLL”。原因:避免C运行时库链接错误。
7)        在“C/C++ ->预编译头”中改为“自动生成”。原因:避免#include “stdafx.h”。
8)        打开tclAppInit.c,找到第30行
extern int matherr();
将之改为:
int matherr(){return 0;}
9)        将wintcl.dll、wintk.dll、winotcl.dll、wincl.dll设置为此项目的依赖项目。
10)     编译运行
 

 

抱歉!评论已关闭.