Visual Studio 2010中的C ++ Boost错误 - errorLNK1104和“不兼容的构建选项”

时间:2013-03-20 09:28:10

标签: c++ visual-studio visual-c++ boost

只需尝试构建从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()。忘了主!哦,好吧,加入一个主要的,一切都很好!

3 个答案:

答案 0 :(得分:3)

对于第一个错误:在VStudio中右键单击项目 - &gt;属性 - &gt;链接器 - &gt;通用 - &gt;其他库目录“boost \ stage \ lib”似乎你试图链接错误的文件夹。还要检查文件

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

就我而言,“发布”模式运行良好,但是“调试”模式显示此错误...

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