C++ 未定义对MinGW-w64 gcc上boost::random::random_设备构造函数和析构函数的引用

C++ 未定义对MinGW-w64 gcc上boost::random::random_设备构造函数和析构函数的引用,c++,windows,boost,g++,boost-random,C++,Windows,Boost,G++,Boost Random,我使用以下工具安装了Boost 1.60版: bootstrap.bat mingw b2 install target=gcc 然后我用Boost.Random的例子测试了它是否有效 对于前两个,一切正常,但第三个给出了关于boost::random::random_设备的链接器错误。我最小化了代码,使其只包含以下内容: // Compiled with: // g++ -IC:/Boost/include/boost-1_60 // -LC:/Boost/lib -lboost_rando

我使用以下工具安装了Boost 1.60版:

bootstrap.bat mingw
b2 install target=gcc
然后我用Boost.Random的例子测试了它是否有效

对于前两个,一切正常,但第三个给出了关于boost::random::random_设备的链接器错误。我最小化了代码,使其只包含以下内容:

// Compiled with:
// g++ -IC:/Boost/include/boost-1_60
// -LC:/Boost/lib -lboost_random-mgw53-mt-1_60
// main.cpp

#include "boost/random/random_device.hpp"

int main() {
    boost::random::random_device rng;
}
我得到以下错误:

C:\Users\Daniel\AppData\Local\Temp\cc5DfdjZ.o:main.cpp:(.text+0x15):
undefined reference to `boost::random::random_device::random_device()'
C:\Users\Daniel\AppData\Local\Temp\cc5DfdjZ.o:main.cpp:(.text+0x20):
undefined reference to `boost::random::random_device::~random_device()'
collect2.exe: error: ld returned 1 exit status
在这里,我发现有类似问题的人在标志中添加了-lboost_系统,但对我来说没有帮助


有人知道为什么它不起作用吗?我检查了一下,我的Boost文件夹中有random_device.hpp头,其中有random_device()和~random_device()的声明。

我发现了问题所在——我想用g++命令语法编译和链接代码

正如我在问题中所写,我是这样做的:

g++ -IC:/Boost/include/boost-1_60 -LC:/Boost/lib -lboost_random-mgw53-mt-1_60 main.cpp
正确的是在-L和-L标志之前使用main.cpp(或我们希望在编译过程中包含的任何其他源代码文件)。 例如:

g++ -IC:/Boost/include/boost-1_60 main.cpp -LC:/Boost/lib -lboost_random-mgw53-mt-1_60
甚至

g++ main.cpp -IC:/Boost/include/boost-1_60 -LC:/Boost/lib -lboost_random-mgw53-mt-1_60

希望它能帮助任何犯这种愚蠢错误的人。

离题:如果在你的mingw版本中能够智能地工作,你可以为此放弃boost。@user4581301不,
std::random\u设备在我的mingw版本中并不是不确定地实现的。对我来说,在Linux上,它与
-lboost\u random
一起工作,这很容易忘记still@Doot是的,Linux稍微简化了一点,但是顺序(这是错误的实际原因)仍然很重要。