【发布时间】:2015-05-07 15:30:51
【问题描述】:
我在 Linux 中找到了 naturalstrcmp 函数,我认为这是我所需要的。如何在 Ubuntu、Debian 和 FreeBSD 中使用它的任何示例?我应该将其声明为外部吗?
编辑:我应该在我的外部声明中添加什么库名? 在我的 Debian 7.7 上,它位于 Alliance 软件包的 /usr/share/man/man3/naturalstrcmp.3.gz 上。
我试过了:
函数 naturalstrcmp(s, t: PChar): 整数;外部“联盟”名称“naturalstrcmp”;
没有成功。错误消息说“找不到 -lalliance”。
EDIT2:现在我知道 lib 文件位于 /usr/lib/alliance/,但不知道 lib 的名称。该目录中的所有文件都命名为 libAbc.so。
所以我尝试了:
函数 naturalstrcmp(s, t: PChar): 整数;外部“libMut.so”名称“naturalstrcmp”;
但是当我声明这个函数时,调试器会返回一个错误条件。
【问题讨论】:
-
http://forum.lazarus.freepascal.org/index.php/topic,24450.msg147208.html#msg147208。或者,https://github.com/cooljeanius/doublecmd/blob/master/src/udcutils.pas 其中函数
CompareStrings使用函数StrFloatCmpW进行自然比较。 -
回答您的问题:是的,您应该将任何外部函数声明为
external(如果尚未在 RTL/FCL/LCL 中声明)。 -
抱歉,我需要一个系统/语言感知功能。
-
这样就够了吗?函数 naturalstrcmp(s1, s2 :string): 整数;外部名称 'naturalstrcmp';
-
我找到了this page 关于
naturalstrcmp函数。我没有找到任何关于mut.h的信息。所以我不能提供库名。您的声明必须是function naturalstrcmp(s, t: PChar): Integer; external 'dynlybname' name 'naturalstrcmp';,其中“dynlybname”是实现此功能的库名称。 Siple 测试是naturalstrcmp(PChar('a2'), PChar('a03'));
标签: ubuntu debian freebsd lazarus natural-sort