使用VS2013编译Boost

使用VS2013编译Boost,boost,visual-studio-2013,Boost,Visual Studio 2013,我在这里尝试编译Boost Calc6示例: 通常情况下,使用Xcode在我的Mac上运行时不会出现故障。目前,我在使用VS2013的PC上。在创建Win32 Console应用程序时,我向标准设置中添加了一些内容。通常,它会为您设置ProjectTitle.cpp和stdafx.cpp,其中包含stdafx.h 下面是Calc示例中包含main的文件的样子 #include "calc6.hpp" #include "stdafx.h" /* I ADDED THIS, AS IT COMES

我在这里尝试编译Boost Calc6示例:

通常情况下,使用Xcode在我的Mac上运行时不会出现故障。目前,我在使用VS2013的PC上。在创建Win32 Console应用程序时,我向标准设置中添加了一些内容。通常,它会为您设置ProjectTitle.cpp和stdafx.cpp,其中包含stdafx.h

下面是Calc示例中包含main的文件的样子

#include "calc6.hpp"
#include "stdafx.h" /* I ADDED THIS, AS IT COMES AS BOILERPLATE WITH VS PROJECT

template <typename Grammar>
bool compile(Grammar const& calc, std::string const& expr)

{
    using ascii::space;

    std::string::const_iterator iter = expr.begin();
    std::string::const_iterator end = expr.end();
    bool r = phrase_parse(iter, end, calc, space);

    if (r && iter == end)
    {
        std::cout << "-------------------------\n";
        std::cout << "Parsing succeeded\n";
        std::cout << "-------------------------\n";
        return true;
    }
    else
    {
        std::cout << "-------------------------\n";
        std::cout << "Parsing failed\n";
        std::cout << "-------------------------\n";
        return false;
    }
}

struct var_printer
{
    var_printer(std::vector<int> const& stack)
    : stack(stack)
    {
    }

    template <typename String, typename Data>
    void operator()(String const& s, Data const& data)
    {
        std::cout << "    " << s << ": " << stack[data] << std::endl;
    }

    std::vector<int> const& stack;
};

int
_tmain() // I CHANGED THIS FROM MAIN TO _TMAIN
{
    std::cout << "/////////////////////////////////////////////////////////\n\n";
    std::cout << "Expression parser...\n\n";
    std::cout << "/////////////////////////////////////////////////////////\n\n";
    std::cout << "Type some statements... ";
    std::cout << "Then type period ('.') to compile, run and print results\n\n";

    typedef std::string::const_iterator iterator_type;
    typedef statement<iterator_type> statement;

    vmachine mach;                  //  Our virtual machine
    std::vector<int> code;          //  Our VM code
    statement calc(code);           //  Our grammar

    std::string str;
    std::string program;
    while (std::getline(std::cin, str))
    {
        if (str.empty() || str[0] == '.')
            break;
        program += str;
    }

    if (::compile(calc, program))
    {
        mach.execute(code, calc.nvars);

        std::cout << "Results------------------\n\n";
        calc.vars.for_each(var_printer(mach.get_stack()));
        std::cout << "-------------------------\n\n";
    }

    std::cout << "Bye... :-) \n\n";
    return 0;
}
并改为

_tmain()
所有其他.cpp和.hpp文件都按原样复制。在这一点上,我得到:为编辑错误消息道歉

  Error 4   error LNK2019: unresolved external symbol "public: __thiscall
statement<class std::_String_const_iterator<class std::_String_val<struct
std::_Simple_types<char> > > >::statement<class
std::_String_const_iterator<class std::_String_val<struct
std::_Simple_types<char> > > >(class std::vector<int,class
std::allocator<int> > &)" 
(??0?$statement@V?$_String_const_iterator@V
$_String_val@U?$_Simple_types@D@std@@@std@@@std@@@@QAE@AAV?$vector@HV
$allocator@H@std@@@std@@@Z) 
referenced in function _wmain
c:\Users\housegroup\documents\visual studio2013\Projects\example\example\calc6.obj example
在![3]丁。否则,它至少在我注释它时编译,例如,如果我将所有的"tmau"保留为空


请帮助,我几乎从未使用过Visual Studio:

删除所有头文件并将其重新添加到头文件文件夹修复了此问题。以前,我把它都放在sourcefiles文件夹中

  Error 4   error LNK2019: unresolved external symbol "public: __thiscall
statement<class std::_String_const_iterator<class std::_String_val<struct
std::_Simple_types<char> > > >::statement<class
std::_String_const_iterator<class std::_String_val<struct
std::_Simple_types<char> > > >(class std::vector<int,class
std::allocator<int> > &)" 
(??0?$statement@V?$_String_const_iterator@V
$_String_val@U?$_Simple_types@D@std@@@std@@@std@@@@QAE@AAV?$vector@HV
$allocator@H@std@@@std@@@Z) 
referenced in function _wmain
c:\Users\housegroup\documents\visual studio2013\Projects\example\example\calc6.obj example
statement calc(code)