在vs.net 2003中编译ns2(2):编译tk
来源:互联网 发布:猎杀潜航3 潜艇数据 编辑:程序博客网 时间:2024/05/17 02:22
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
- 在vs.net 2003中编译ns2(2):编译tk
- 在vs.net 2003中编译ns2(5):编译ns2
- 在vs.net 2003中编译ns2(1):编译tcl
- 在vs.net 2003中编译ns2(3):编译otcl
- 在vs.net 2003中编译ns2(4):编译tclcl
- 在vs.net 2003中编译ns2(6):编译nam
- 在vs.net 2003中编译ns2(7):编译bluehoc
- 在vs2003中编译ns2:工程文件
- NS2中,编译文件
- 在VS.NET 2005中编译c程序
- vs.net 2003 中 编译运行directx sample项目
- 在VS中编译Opencascade6.6.0
- 在VS中让Shader自动编译
- 在VS中让Shader自动编译
- 在VS中配置Python编译环境
- 如何编译tcl&tk
- vs.net c++ 2003编译错误求解
- VS.NET 2003编译DirectShow的问题
- 在C#中使用ADO.Net部件来访问Access数据库
- Linux设备驱动程序设计
- 上传文件,判断文件的后缀名的代码以及正则表达式
- windows任务管理器代码
- CSDN技术大会场记
- 在vs.net 2003中编译ns2(2):编译tk
- 关于JNI (转载)
- checkall
- Java: 递归删除文件夹内容
- 哈哈~blog弄好啦~
- 资料管理器-nn新记事本
- 下载类,可以将文件存放在网站所在目录以外
- huhhot-简易web server
- 改变收藏夹的默认路径