小编cha*_*ins的帖子

C++ CMake 构建错误:未定义对 `boost::throw_exception(std::exception const&) 的引用

我一直在尝试将 boost.Log 集成到我的项目中,但是在构建时我收到错误消息:

/usr/lib/cross/boost/lib/libboost_date_time.so: undefined reference to `boost::throw_exception(std::exception const&)'
Run Code Online (Sandbox Code Playgroud)

我已经检查过确保我没有在任何地方定义 BOOST_NO_EXCEPTIONS,但我仍然对为什么会收到此错误感到困惑。我的CMAKE文件如下:

set(Boost_INCLUDE_DIR /usr/lib/cross/boost/include)
set(Boost_LIBRARY_DIR /usr/lib/cross/boost/lib)
find_package(Boost 1.63.0 COMPONENTS system filesystem log REQUIRED)

message(status "** Boost Include: ${Boost_INCLUDE_DIR}")
message(status "** Boost Libraries: ${Boost_LIBRARY_DIRS}")
message(status "** Boost Libraries: ${Boost_LIBRARIES}")

set (PROJECT_LINK_LIBS thrift crypto ssl sqlcipher)

link_directories( $ENV{LD_LIBRARY_PATH}
                ${Boost_LIBRARY_DIRS}
)

include_directories( $ENV{LD_INCLUDE_PATH}
$ENV{LD_INCLUDE_PATH}/sqlcipher
${Boost_INCLUDE_DIR}
)

add_executable(databaseManager ${MY_SRC})

target_link_libraries(databaseManager ${Boost_LIBRARIES} ${PROJECT_LINK_LIBS} )
Run Code Online (Sandbox Code Playgroud)

库的 FIND 输出似乎没问题:

-- Boost version: 1.63.0
1> -- Found the following Boost libraries:
1> --   system
1> --   filesystem
1> -- …
Run Code Online (Sandbox Code Playgroud)

c++ boost cmake

4
推荐指数
1
解决办法
2412
查看次数

在写出来的函数出来后,向量丢失数据

我只是在缺席10年后重新回到C++,所以决定尝试编写一个ASCII BlackJack游戏.我决定使用一个向量来保持牌组和牌手,但我发现当我调用初始交易函数时,它应该为DEALER向量牌和PLAYER向量牌分配2张牌,它写的牌很好但是当它出来后来我想要打印手,我得到一个超出范围的例外.

代码片段如下!

void deck::initialDeal(player dealer, player player1)
{
    for(int i = 0; i < 2 ; i++)
    {
        dealer.addHand(myDeck[i]);
        myDeck.erase(myDeck.begin());
        player1.addHand(myDeck[i]);
        myDeck.erase(myDeck.begin());
    }
}
Run Code Online (Sandbox Code Playgroud)

以上只需从我的主甲板上取几张牌并调用addHand例程将卡添加到玩家矢量手中:

void player::addHand(card dealtCard)
{
    hand.push_back(dealtCard);
}
Run Code Online (Sandbox Code Playgroud)

如果我在addHand函数中输入一个例程来输出手向量,它可以正常工作并显示数据被放入.

但是,稍后我想将手打印到屏幕上,因此有另一个名为printHand()的函数

void player::printHand()
{
    if (dealer == true)
    {
        cout << hand[0].getNumber() << hand[0].getSuit() << " ";
        cout << hand.size() << endl;
    }
    else
    {
        for(std::vector<card>::size_type x = 0 ; x != hand.size() ; x++)
        {
            cout << hand[x].getNumber() << hand[x].getSuit() << " ";
        }
    }
} …
Run Code Online (Sandbox Code Playgroud)

c++ vector

2
推荐指数
1
解决办法
1659
查看次数

标签 统计

c++ ×2

boost ×1

cmake ×1

vector ×1