0

只需尝试构建从 Boost 教程复制和粘贴的代码。(见下文)

我只有头文件,目前还没有构建的库。

问题是我收到两个错误:

Error 1 error LNK1104: cannot open file 'libboost_system-vc100-mt-gd-1_53.lib' \\selafap01\homedrives\mgibson\My Documents\Visual Studio 2010\Projects\C++ Boost Test\C++ Boost Test\LINK C++ Boost Test

2 IntelliSense: #error directive: "Incompatible build options" c:\boost\config\auto_link.hpp 111 4

不管我做什么,它似乎都想要一个 .lib 文件,我真的不知道该怎么做。

#include <boost/asio.hpp>

class SimpleSerial
{
public:
/**
 * Constructor.
 * \param port device name, example "/dev/ttyUSB0" or "COM4"
 * \param baud_rate communication speed, example 9600 or 115200
 * \throws boost::system::system_error if cannot open the
 * serial device
 */
SimpleSerial(std::string port, unsigned int baud_rate)
: io(), serial(io,port)
{
    serial.set_option(boost::asio::serial_port_base::baud_rate(baud_rate));
}

/**
 * Write a string to the serial device.
 * \param s string to write
 * \throws boost::system::system_error on failure
 */
void writeString(std::string s)
{
    boost::asio::write(serial,boost::asio::buffer(s.c_str(),s.size()));
}

/**
 * Blocks until a line is received from the serial device.
 * Eventual '\n' or '\r\n' characters at the end of the string are removed.
 * \return a string containing the received line
 * \throws boost::system::system_error on failure
 */
std::string readLine()
{
    //Reading data char by char, code is optimized for simplicity, not speed
    using namespace boost;
    char c;
    std::string result;
    for(;;)
    {
        asio::read(serial,asio::buffer(&c,1));
        switch(c)
        {
            case '\r':
                break;
            case '\n':
                return result;
            default:
                result+=c;
        }
    }
}

private:
    boost::asio::io_service io;
    boost::asio::serial_port serial;
};

关于如何获取该 lib 文件的任何指示,因为它似乎并不在任何地方的 Boost 标头唯一目录中,计算机搜索也找不到任何东西.. 将不胜感激。

干杯

编辑1:

能够生成必要的 .lib 文件,但在 Visual Studio 命令提示符中导航 boost 目录并运行 bootstrap.bat,这会生成 b2.exe,我运行它并使用所需的二进制文件生成 stage/lib 目录。

但是,现在我收到另一个错误..“错误 LNK1561:必须定义入口点”

我猜错误的循环还在继续:)

编辑 2:被引用的入口点是 main()。忘记主线了!哦,好吧,添加了一个主要的,一切都很好!

4

3 回答 3

3

对于第一个错误:右键单击 VStudio 中的项目 -> 属性 -> 链接器 -> 常规 -> 附加库目录 "boost\stage\lib" 似乎您试图链接错误的文件夹。还要检查文件

libboost_system-vc100-mt-gd-1_53.lib

位于 boost\stage\lib 文件夹中。

于 2013-03-20T09:34:29.643 回答
0

如果您在构建中进行静态链接,则需要安装 boost 并提供库。安装后,您将能够在 VS 项目配置中找到并指定库的路径。

于 2013-03-20T09:34:36.773 回答
0

在我的情况下,发布模式运行良好,但调试模式显示此错误......

试试这个:右键单击 VStudio 属性中的项目 -> C/C++ -> 代码常规 -> 运行时库:将 /MT 更改为 /MTD。

于 2018-07-24T01:40:53.040 回答