【发布时间】:2020-07-21 14:02:46
【问题描述】:
我已经使用 brew 在 MacOSX 10.15 boost 上安装了,一切正常,除了 random_device。
这是我写的:
#include <iostream>
#include <boost/random/mersenne_twister.hpp>
#include <boost/random/discrete_distribution.hpp>
#include <boost/random/random_device.hpp>
int main() {
boost::random::random_device rand_dev;
boost::mt19937 gen(rand_dev());
double probabilities[]{0, 0.99, 0.01, 0};
boost::random::discrete_distribution<> dist(probabilities);
std::cout << dist(gen);
return 0;
}
这就是我从编译器得到的:
架构 x86_64 的未定义符号:
“boost::random::random_device::random_device()”,引用自: _main 在 main.cpp.o 中
“boost::random::random_device::~random_device()”,引用自: _main 在 main.cpp.o 中
“boost::random::random_device::operator()()”,引用自: _main 在 main.cpp.o 中
ld:未找到架构 x86_64 的符号
clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看 调用)
我正在使用 CMake 链接它。而且我已经在Ubuntu 18 上安装了它并且得到了同样的链接错误。
这是我的 CMake 的一部分:
find_package(Boost 1.72)
if(Boost_FOUND)
include_directories(${Boost_INCLUDE_DIRS})
target_link_libraries(test_boost ${Boost_LIBRARY_DIR})
endif()
【问题讨论】:
-
"这是我从编译器得到的:" 这些是链接器的错误,而不是编译器的错误。你是如何链接你的应用程序的?您是否链接了相关的 boost 库?
-
我正在使用 CMake 链接它。而且我已经将它安装在
Ubuntu 18上并且得到了相同的链接错误。这是我的 CMake 的一部分:find_package(Boost 1.72) if(Boost_FOUND) include_directories(${Boost_INCLUDE_DIRS}) target_link_libraries(test_boost ${Boost_LIBRARY_DIR}) endif() -
回答问题所需的所有信息都必须出现在问题中,而不是在 cmets 中。请edit您的问题添加上述信息。