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

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

2013年09月21日 ⁄ 综合 ⁄ 共 3224字 ⁄ 字号 评论关闭
 

1              编译wintk.dll
1、 创建wintk.dll工程。
2、 删除wintk.cpp(自动生成的文件)中的DllMain函数。原因:tk提供了此函数。
3、 将工程的输出路径改为:$(SolutionDir)/Debug。原因:将所有生成的dll和exe放在同一目录下,避免产生找不到文件的情况。
4、 将中间目录改为:$(SolutionDir)/Debug/wintk。原因:个人喜爱。
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/tk8.4.14/bitmaps";
6、 将“C/C++ -> 代码生成 -> 运行时库”改为“多线程调试DLL”。原因:避免C运行时库链接错误。
7、 在“C/C++ ->预处理器”中添加Build_tk的宏定义。原因:这样可以导出符号。
8、 在“C/C++ ->预编译头”中改为“自动生成”。原因:避免#include “stdafx.h”。
9、 在“链接器 -> 输入 -> 附加项”中添加Imm32.lib comctl32.lib
10、              将wintcl.dll设置为此项目的依赖项目。
11、             
tk8.4.14/generic;
tk8.4.14/win;
tk8.4.14/compat;
tk8.4.14/xlib;
4个目录下.c和.h文件添加到工程中。
12、              将tk8.4.14/unix目录下的tkUnixMenubu.c和tkUnixScale.c两个文件添加到工程中。
13、              从工程中删除以下文件:
compat:
generic:
win:
nmakehlp.c
winMain.c
14、              打开tk.h,添加
#ifdef Build_tk
#define WINTK_API __declspec(dllexport)
#else
#define WINTK_API __declspec(dllimport)
#endif
在工程中搜索EXTERN并将之替换为WINTK_API。记住务必使用大小写匹配和全字匹配。
原因:EXTERN这个名字太普通了,会造成很在的困扰。
15、              打开tkWinButton.c,在第349行(TkpDisplayButton函数中)有如下定义:
int width, height, haveImage = 0, haveText = 0, drawRing = 0;
将之改为
int width = 0, height = 0, haveImage = 0, haveText = 0, drawRing = 0;
否则将出现运行时错误。
16、              打开tkUnixMenubu.c,在第79行(TkpDisplayMenuButton函数中)有如下定义:
    int width, height, fullWidth, fullHeight;
将之改为
    int width = 0, height = 0, fullWidth = 0, fullHeight = 0;
否则将出现运行时错误。
17、              将tk8.4.14/win/rc/tk.rc添加到工程中。
18、              打开tk.rc,将最后一行
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "wish.exe.manifest"
注释掉
19、              查看tk.rc的属性,在“预处理器定义”中添加“Build_tk”,在附加包含目录中添加
"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/tk8.4.14/bitmaps";
20、              编译工程,生成wintk.dll
2              编译tksh.exe
21、              创建tksh.exe工程,类型为Windows应用程序。
22、              在工程在删除tksh.cpp(自动生成的文件)。
23、              在工程中添加以下文件:
D:/ns-allinone-2.31/tcl8.4.14/win/winMain.c
24、              将工程的输出路径改为:$(SolutionDir)/Debug。原因:将所有生成的dll和exe放在同一目录下,避免产生找不到文件的情况。
25、              将中间目录改为:$(SolutionDir)/Debug/tclsh。原因:个人喜爱。
26、              在“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";
27、              将“C/C++ -> 代码生成 -> 运行时库”改为“多线程调试DLL”。原因:避免C运行时库链接错误。
28、              在“C/C++ ->预编译头”中改为“自动生成”。原因:避免#include “stdafx.h”。
29、              将wintcl.dll、wintk.dll设置为此项目的依赖项目。
30、              将tk8.4.14/win/rc/wish.rc添加到工程中。
31、              打开wish.rc,将最后一行
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "wish.exe.manifest"
注释掉
32、              查看wish.rc的属性,在附加包含目录中添加
"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/tk8.4.14/bitmaps";
33、              在Windows系统环境中添加一个变量:
TK_LIBRARY:D:/ns-allinone-2.31/tk8.4.14/library
34、              编译运行
35、              在tk命令行下运行测试tcl:
cd tk8.4.14
cd tests
source all.tcl

 

抱歉!评论已关闭.