我惊讶地发现,我无法使用Linux mingw工具从最新版本的源代码交叉编译工作的Windows Tk dll。编译一个工作的tclsh.exe没问题。编译好的tk86.dll抱怨它无法找到编译进来的资源文件并崩溃。
根据make流程回显的构建命令,资源似乎已按预期构建和包含。
在安装了mingw交叉编译工具的64位Linux上,我交叉编译Tk 8.6.8:
在win子目录中:
$ ./configure --with-encoding=utf-8 --host=x86_64-w64-mingw32 --enable-threads --enable-64bit --with-tcl=/opt/tcl8.6.8/win
$ make tk86.dll
为了测试结果,我在Windows 10计算机上按照https://www.tcl.tk/software/tcltk/bindist.html
的建议从Thomas Perschak下载二进制Tcl / Tk发行版我将新编译的tk86.dll替换为已下载的版本。
> tclsh86.exe
% package require Tk
% button .b
FindResource() failed for buttons bitmap resource, resources in tk_base.rc must be linked into Tk dll or static executable
然后解释器就崩溃了。
我不知道这是Tk或其构建工具中的错误,还是我的配置疏忽。工作要求不允许我使用预编译的二进制文件,所以这对我来说是一个显而易见的。任何提示都赞赏。