这个错误是啥意思:未定义的符号:THREADVARLIST_STRINGS

Posted

技术标签:

【中文标题】这个错误是啥意思:未定义的符号:THREADVARLIST_STRINGS【英文标题】:What does this Error mean : Undefined symbol: THREADVARLIST_STRINGS这个错误是什么意思:未定义的符号:THREADVARLIST_STRINGS 【发布时间】:2011-07-27 19:14:09 【问题描述】:

我刚开始学习 Free Pascal,我编写了这个相当基本的程序来练习数组。我收到两个错误:

Strings.lpr(32,1) 错误:未定义符号:THREADVARLIST_STRINGS

Strings.lpr(32,1) 错误:未定义符号:STRINGS_STRPAS$PCHAR$$SHORTSTRING

Strings.lpr(32,1) 致命:编译模块时出现 2 个错误,正在停止

代码如下:

program Strings;

$mode objfpc$H+

uses
  $IFDEF UNIX$IFDEF UseCThreads
  cthreads,
  $ENDIF$ENDIF
  Classes, SysUtils
   you can add units after this ;

$R *.res
var
  Marks : array [1..10] of Integer;
  index : Integer;
begin
  for index:= 0 to 10 do
  begin
    write('Enter mark of student ',index,': ');
    readln(marks[index]);
  end;

  for index := 0 to 10 do
  begin
    write('Student No. ',index,'   Marks: ',marks[index],'   ');
    if marks[index]>65 then writeln('PASS')
    else writeln('FAIL');
  end;

  writeln('Press any key to continue.');
  readln;
end. line 32

【问题讨论】:

嗯,我希望代码看起来更丰富多彩。 显然你需要为此添加delphi标签。 是的,@Marco,但将问题标记为“delphi”表明它实际上与 Delphi 有关,但这里并非如此。不要仅仅为了语法高亮而标记问题。在问题中使用the language-specification syntax。 Prettify 荧光笔仍然不支持特定于 Pascal 或 Delphi 的高亮规则,所以我们只能使用通用规则。 【参考方案1】:

不要命名您的程序字符串。有一个具有该名称的预编译单元。

通常意味着您创建了一个主程序,但没有链接正确的 RTL。

可能的原因:

版本冲突,(编译器RTL) 手动链接所犯的错误(试图从 C 中访问 Pascal?) 尝试使用不支持某些语言功能的嵌入式 RTL。 (你的情况)一些命名冲突。但这通常很少见,并且通常被编译器捕获。因此,这种体验可能值得在 FPC 错误跟踪器中作为错误提交

【讨论】:

【参考方案2】:

变化:

程序字符串;

到:

程序测试字符串;

纠正错误。字符串是保留字。

此外,您还有“按任意键”后跟 readln。 readln 等待回车。比如:

WriteLn('按任意键继续。'); 重复 直到按键;

可能是您正在寻找的。

【讨论】:

以上是关于这个错误是啥意思:未定义的符号:THREADVARLIST_STRINGS的主要内容,如果未能解决你的问题,请参考以下文章

编译时错误“架构 x86_64 的未定义符号”是啥意思?

在这个 C90 未定义的行为定义中,“有符号或无符号类型”是啥意思?

“找不到符号”或“无法解析符号”错误是啥意思?

“找不到符号”或“无法解析符号”错误是啥意思?

在这种情况下,&(和号)符号是啥意思?

cform未定义是啥意思