代码块无法识别tcl库

代码块无法识别tcl库,c,tcl,codeblocks,C,Tcl,Codeblocks,我正在尝试运行一个使用tcl和传统opengl的旧程序。我成功地链接了opengl库;但是,我似乎无法让tcl链接器正常工作。对于上下文,我使用的程序附带include和lib文件夹。lib文件夹包含tclstub86_32.lib、tclstub86_64.lib和tkstub86.lib以及opengl.libs。include文件夹包含两个文件夹:tcl_include和tk_include,其中显然包含tcl和tk的所有.c和.h文件。以下图片显示了我使用project->build o

我正在尝试运行一个使用tcl和传统opengl的旧程序。我成功地链接了opengl库;但是,我似乎无法让tcl链接器正常工作。对于上下文,我使用的程序附带include和lib文件夹。lib文件夹包含tclstub86_32.lib、tclstub86_64.lib和tkstub86.lib以及opengl.libs。include文件夹包含两个文件夹:tcl_include和tk_include,其中显然包含tcl和tk的所有.c和.h文件。以下图片显示了我使用project->build options进行的设置:

我在编译时收到的错误是:

C:\Users\amlut\Downloads\C\tkogl\curve.c|18|undefined reference to `_imp__Tcl_Free'|
下面是引发错误的代码位:

if (*line != NULL) Tcl_Free((char*)*line);

我不确定我在这里做错了什么,任何帮助都是感激的。谢谢。

问题在于,代码显然是针对Tcl存根库链接了一个ABI/API适配器库,但编译时不是为了使用该库,而是为了使用完整的Tcl库。在构建扩展包时,使用存根库是一件好事,因为这意味着生成的代码不会绑定到Tcl和Tk库的确切版本,而是绑定到具有更长支持周期的Tcl ABI版本


修复方法是定义具有相同问题的USE_TCL_存根和USE_TK_存根;在构建时,您刚刚点击了Tcl版本的第一个C预处理器符号;将它们都设置为1并重新编译。这显然是在Code::Blocks中。

感谢您的回复。但是,即使指定了定义,它仍然会抛出编译器错误。还有其他途径吗?更新:我将定义直接添加到tcl.h头中,当错误消失时,我得到另一个错误,表明没有这样的文件或目录。编辑tcl.h头文件不是这样做的方法!顺便说一句,我实际上不再了解您的系统的状态,但是如果您正在执行诸如编辑他人提供的头文件之类的操作,任何完全为您解决问题的答案都不太可能适用于任何其他人。这是我唯一一次编辑头文件,我删除了这一行,使其恢复正常。但是,它遇到了同样的错误,即无法识别任何TCL/TK函数。