1

C++プログラムに厄介な問題があります。最近、あるシステムから別のシステムに移動した2つのプログラム(メインプログラムと、テスト用にフィードする小さなヘルパープログラム)があります。新しいシステムでは、メインプログラムのstrptimeメソッドで未解決の参照エラーが発生し始めました。厄介なのは、ヘルパープログラムにも同じstrptimeメソッドがあり、問題なく呼び出すことができることです。Strptimeは古いシステムで動作し、両方のシステムが同じバージョンのcentosを実行しています。

私は自分の参照が未解決である理由を特定するために明白なことを試みました。ヘルパープログラムが持っていたすべてのヘッダーをメインプログラムにコピーしようとしましたが、まだ解決されていません。Eclipseコンパイラ/リンカーの設定を確認しました。メインプログラムがさらにいくつかのことを実行しますが(いくつかのシンボルを追加し、いくつかの追加フォルダーを含め、libldにリンクします)、1つのプログラムが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 に答える