1

我的 C++ 程序有一个烦人的问题。我有两个程序(一个主程序和一个用于测试的小助手程序),我最近从一个系统转移到另一个系统。在新系统上,我开始在主程序中得到一个未解决的 strptime 方法的引用错误。恼人的是,辅助程序也有相同的 strptime 方法,并且能够毫无困难地调用它。strptime 在旧系统上工作,两个系统都运行相同版本的 centos。

我已经尝试了一些显而易见的事情来确定为什么我的参考没有得到解决。我尝试将我的帮助程序必须的每个标题复制到我的主程序中,但仍然没有解决。我检查了 eclipse 编译器/链接器设置,虽然主程序做了更多的事情(添加了一些符号,包括一些额外的文件夹,以及指向 libld 的链接),但似乎没有任何更改可以解释为什么一个程序可以识别 strptime。我试图创建一个仅使用 strptime 的演示程序,并且它被识别出来了。我现在对为什么会收到错误感到迷茫。谁能建议我可以检查未解决参考的潜在原因的其他内容?

我已经验证了我正在链接的 time.h 包含 strptime 方法,但它是在外部定义的。time.h 文件是否应该包含另一个 .h 来提供该方法的内联定义?

4

1 回答 1

0

我以前没见过这个,但这可能会有所帮助:

从 linux 手册页...

http://linux.die.net/man/3/strptime

#define _XOPEN_SOURCE /* See feature_test_macros(7) */
#include <time.h>

_XOPEN_SOURCE - 功能测试宏

定义此宏会导致头文件公开如下定义: • 使用任何值定义会公开符合 POSIX.1、POSIX.2 和 XPG4 的定义。• 500 或更大的值另外公开了SUSv2 (UNIX 98) 的定义。

• (自glibc 2.2 起)600 或更大的值额外公开了SUSv3(UNIX 03;即POSIX.1-2001 基本规范加上XSI 扩展)和C99 定义的定义。

• (自glibc 2.10 起)700 或更大的值额外公开了SUSv4 的定义(即POSIX.1-2008 基本规范加上XSI 扩展)。

于 2012-07-25T19:21:21.547 回答