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.
You should change your cmake file to exactly match https://github.com/Microsoft/vcpkg/blob/master/ports/boost/usage.
e.g. in find_package the package name should be Boost not boost, adding REQUIRED would make it fail if boost isn't found, cmake is possibly not finding boost and silently ignoring it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With