Visual Studio 2012 x64 dll を使用して openexr2.0.0 をコンパイルしていますが、次のエラーが発生しました。
ImfLut.obj : error LNK2001: unresolved external symbol "private: static union half::uif const * const half::_toFloat" (?_toFloat@half@@0QBTuif@1@B)
ImfRgbaYca.obj : error LNK2001: unresolved external symbol "private: static unsigned short const * const half::_eLut" (?_eLut@half@@0QBGB)
そして、dumpbin /exports を使用して half.lib を調べました。
half.dll で dumpbin /exports を使用して別の検索を行います。
2つのシンボルがそこにあります。そして興味深いことに、half.lib を依存関係から削除すると、VS クレームの変換も未解決です。これは、convert は検出できたが、_toFloat と _eLut は検出できなかったことを示しています。違いは次のとおりです。_toFloat と _eLut はどちらも静的フィールドであり、convert は静的メソッドです。
class half
{
...
public:
union uif
{
unsigned int i;
float f;
};
private:
HALF_EXPORT static short convert (int i);
HALF_EXPORT static const uif _toFloat[1 << 16];
HALF_EXPORT static const unsigned short _eLut[1 << 9];
...
};
私のシステムは Windows 8 x64 です。この問題を解決する方法を知っている人はいますか?