在静态库中包含 STL

Including STL in static libraries

我已经用下面的文件 alien.h 和 alien.cpp 创建了一个静态库。该库 link 由文件 user.cpp 编辑。如果删除带有注释的行,则代码编译 links,并按预期运行。事实上,库和程序可以编译,但程序不会 link。 MSVC2015RC 生成超过 100 个关于 std::numeric_limits 已经被定义的错误。

是否有一些我应该注意的设置,或者这是一个 MSVC2015 错误?

文件alien.h

#include <vector> // This line causes troubles.

struct alien
{
    const int * const value;
};

extern alien meh;

文件alien.cpp

alien meh { 7 };

文件user.cpp

#include "alien.h"
#include <iostream>
#pragma comment(lib, "alien.lib")

int main()
{
    wcout << meh.value;
    return 0;
}

Error LNK2005 "public: static int const std::numeric_limits::max_exponent" (?max_exponent@?$numeric_limits@M@std@@2HB) already defined in alien.obj

bug!相同的 library/program 在未启用语言扩展的情况下在 MSVC2013 下编译。在 MSVC2015 中,必须启用语言扩展。