vendredi 22 juin 2018

Error linking boost with Visual Studio and vcpkg

I am trying to accomplish a simple task in order to check how easy is to develop "Linux apps" in Windows.

I am using vcpkg from Microsoft in order to setup headers and libs and crow , an c++ http server that uses boost as a driver project

The source is simple

#include "crow.hpp"

int main()
{
    crow::SimpleApp app;

    CROW_ROUTE(app, "/")
        ([]() {
        return "Hello world!";
    });

    app.port(18080).run();
}

I have downloaded boost via vcpkg and used Visual Studio to code the project

cmake:

cmake_minimum_required (VERSION 3.8) find_package(boost COMPONENTS filesystem system thread date_time REQUIRED) message("this is ${Boost_INCLUDE_DIRS}")

include_directories ("C:\\github.com\\crow\\include")
include_directories(SYSTEM PUBLIC ${Boost_INCLUDE_DIRS})

add_executable (engine "promo-engine-windows.cpp" "promo-engine-windows.h")

target_link_libraries(engine  ${Boost_LIBRARIES})

CMakeSettings.json

{
  "configurations": [
    {
      "name": "x86-Debug",
      "generator": "Visual Studio 15 2017",
      "configurationType": "Debug",
      "buildRoot": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}\\build\\${name}",
      "cmakeCommandArgs": "",
      "buildCommandArgs": "-m -v:minimal",
      "variables": [
        {
          "name": "CMAKE_TOOLCHAIN_FILE",
          "value": "C:\\github.com\\vcpkg\\scripts\\buildsystems\\vcpkg.cmake"
        }
      ]
    }
  ]
}

Linking gives errors:

error LNK2019: unresolved external symbol "__declspec(dllimport) class boost::system::error_category const & __cdecl boost::system::system_category(void)" (__imp_?system_category@system@boost@@YAABVerror_category@12@XZ) referenced in function "public: __thiscall boost::system::error_code::error_code(void)" (??0error_code@system@boost@@QAE@XZ) 

error LNK2019: unresolved external symbol "__declspec(dllimport) class boost::system::error_category const & __cdecl boost::system::generic_category(void)" (__imp_?generic_category@system@boost@@YAABVerror_category@12@XZ) referenced in function "public: virtual bool __thiscall boost::system::error_category::std_category::equivalent(class std::error_code const &,int)const " (?equivalent@std_category@error_category@system@boost@@UBE_NABVerror_code@std@@H@Z) 

error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall boost::gregorian::greg_month::greg_month(unsigned short)" (__imp_??0greg_month@gregorian@boost@@QAE@G@Z) referenced in function "public: __thiscall boost::gregorian::date::date(enum boost::date_time::special_values)" (??0date@gregorian@boost@@QAE@W4special_values@date_time@2@@Z) 

error LNK2019: unresolved external symbol "__declspec(dllimport) public: __thiscall boost::gregorian::greg_month::operator unsigned short(void)const " (__imp_??Bgreg_month@gregorian@boost@@QBEGXZ) referenced in function "public: static unsigned int __cdecl boost::date_time::gregorian_calendar_base<struct boost::date_time::year_month_day_base<class boost::gregorian::greg_year,class boost::gregorian::greg_month,class boost::gregorian::greg_day>,unsigned int>::day_number(struct boost::date_time::year_month_day_base<class boost::gregorian::greg_year,class boost::gregorian::greg_month,class boost::gregorian::greg_day> const &)" (?day_number@?$gregorian_calendar_base@U?$year_month_day_base@Vgreg_year@gregorian@boost@@Vgreg_month@23@Vgreg_day@23@@date_time@boost@@I@date_time@boost@@SAIABU?$year_month_day_base@Vgreg_year@gregorian@boost@@Vgreg_month@23@Vgreg_day@23@@23@@Z) 

fatal error LNK1120: 4 unresolved externals 

Build failed

Does it ring a bell to anyone? I am struggling hours with this.

Aucun commentaire:

Enregistrer un commentaire