2

我正在尝试构建和修复 UCL RAT,以便在使用 VS 2010 编译的 Windows 上运行。我已经在 Visual Studio 2010 和主要 RAT 可执行文件下成功编译了 TCL 8.5.12。

RAT 使用 TCL 来驱动它的用户界面。

当我开始修改 RAT 以将通常存储为字符串的 TCL 代码嵌入到 zip 文件中而不是使用 zvfs 时,问题就出现了。目的是最终将 zip 嵌入到可执行文件的末尾,以最大限度地减少磁盘使用和分发文件的数量。

所以我从 TOBE 项目下载了一些 zvfs 代码,看看我是否可以使用它来加快进程(特别是 zvfs.c 文件,它基本上是 tcl 的 zvfs 扩展)

这需要 Zlib 才能运行构建和集成良好。

但问题是 zvfs 代码没有与 TCL 正确链接。它通过了编译,但在链接时出现以下错误:

2>zvfs.obj : error LNK2019: unresolved external symbol _TclOpenFileChannelInsertProc referenced in function _Zvfs_Init
2>zvfs.obj : error LNK2019: unresolved external symbol _TclStatInsertProc referenced in function _Zvfs_Init
2>zvfs.obj : error LNK2019: unresolved external symbol _TclAccessInsertProc referenced in function _Zvfs_Init

对 c/c++ 和链接器没有我可能的经验,这已成为为更现代的 Windows 版本修复 RAT 的障碍。

RAT 的版本是来自 UCL 颠覆服务器的最新版本,如果这有任何影响,Zlib 的版本是 1.2.7。

干杯

4

1 回答 1

1

这些特定功能已过时,但在正确构建到 Tcl 8.5(包括 8.5.12)时仍受支持。USE_OBSOLETE_FS_HOOKS在 Tcl 库的干净构建期间,您需要使用编译器定义预处理器符号(可以是任何东西)。唉,这意味着您需要编辑默认的构建指令,这就是我无法提供帮助的地方,因为我使用了与您完全不同的构建链(在不同的平台上)。

此外,在链接时,您需要链接 Tcl 库本身而不是它的存根库。

于 2012-11-27T08:57:59.497 回答