针对自定义构建的tcl85.lib的链接器错误,适用于ActiveState发行版的tcl85.lib

Linker errors against custom built tcl85.lib, works against ActiveState distribution's tcl85.lib

本文关键字:tcl85 lib 适用于 ActiveState 链接 自定义 构建 错误      更新时间:2023-10-16

我们正在自己构建tcl,以便用应用程序分发我们自己的编译二进制文件。该应用程序本身链接到TCL库,并在内部使用API。

要构建TCL,我们从http://sourceforge.net/projects/tcl/获得了来源运行该蝙蝠文件。在/Win/Release_VC11中产生了预期的建筑作品,并产生输出。更具体地说,产生了TCL85.lib和TCL85.DLL。

当我们从QT C 应用程序中链接到此.lib时,我们会收到一堆链接器错误。例如:

commands.obj : error LNK2019: unresolved external symbol __imp_Tcl_AppendResult 
referenced in function "int __cdecl CallQMessageBox(void *,struct Tcl_Interp *,
int,char * * const)" (?CallQMessageBox@@YAHPEAXPEAUTcl_Interp@@HQEAPEAD@Z)

但是,当我们根据ActiveState TCL分布的一部分提供的TCL85.LIB文件链接时,链接器没有任何问题并构建正常。我们验证了它在两种情况下都是TCL完全相同的版本。

我们正在使用MSVC 2012(Express Edition)来构建TCL,并且构建命令在buildall.vc.bat中保持未修改:

::set OPTS=threads
if not %SYMBOLS%.==. set OPTS=symbols
nmake -nologo -f makefile.vc release OPTS=%OPTS% %1

我们一直在尝试各种不运气的事情。

好的,弄清楚了:

我将TCL构建为32位二元而不是64位。

更换

call "D:toolsMicrosoft Visual Studio 11.0VCbinvcvars32.bat"

call "D:toolsMicrosoft Visual Studio 11.0VCbinx86_amd64vcvarsx86_amd64.bat"

并将AMD64添加到Nmake命令中

nmake -nologo -f makefile.vc release OPTS=%OPTS% %1 MACHINE=AMD64

在buildall.vc.bat中似乎已经修复了它。