libfacedetection icon indicating copy to clipboard operation
libfacedetection copied to clipboard

[MSVC] Libfacedetection build failed due to error C2039: 'to_string': is not a member of 'std'

Open Zhaojun-Liu opened this issue 2 years ago • 2 comments

Description: Recently, we updated the commit of bitcoin for MSVC RWC testing, it failed to build due to the error C2039 and error C3861 like below, could you please help take a look? Thanks.

F:\gitP\ShiqiYu\libfacedetection\src\facedetectcnn.cpp(638,17): error C2039: 'to_string': is not a member of 'std' [F:\gitP\ShiqiYu\libfacedetection\build_amd64\facedetection.vcxproj]
         F:\gitP\ShiqiYu\libfacedetection\src\facedetectcnn.cpp(638,26): error C3861: 'to_string': identifier not found [F:\gitP\ShiqiYu\libfacedetection\build_amd64\facedetection.vcxproj]

Expected behavior: Build successfully.

Actual behavior: Build failed with error C2039 and error C3861

To reprodece:

  1. open VS2019 x64 Native Tools command.
  2. git clone https://github.com/ShiqiYu/libfacedetection F:\gitP\ShiqiYu\libfacedetection
  3. mkdir F:\gitP\ShiqiYu\libfacedetection\build_amd64 and cd F:\gitP\ShiqiYu\libfacedetection\build_amd64
  4. cmake -G "Visual Studio 16 2019" -A x64 -DCMAKE_SYSTEM_VERSION=10.0.18362.0 -DCMAKE_INSTALL_PREFIX=install -DBUILD_SHARED_LIBS=ON -DCMAKE_BUILD_TYPE=Release -DDEMO=OFF ..
  5. msbuild /m /p:Platform=x64 /p:Configuration=Release libfacedetection.sln /t:Rebuild

More info: The commit of Libfacedetection we use: 4092665 VS version: VS2019 (v16.11.20)

Detailed log: build.log

Zhaojun-Liu avatar Dec 06 '22 06:12 Zhaojun-Liu

Looks like the string header is missing. Have a try with including it in the beginning of facedetectcnn.cpp:

#include "facedetectcnn.h"
#include <cmath>
#include <float.h> //for FLT_EPSION
#include <algorithm>//for stable_sort, sort

+ #include <string>

typedef struct NormalizedBBox_
{
    float xmin;
    float ymin;
    float xmax;
    float ymax;
    float lm[10];
} NormalizedBBox;

fengyuentau avatar Dec 08 '22 02:12 fengyuentau

Looks like the string header is missing. Have a try with including it in the beginning of facedetectcnn.cpp:

#include "facedetectcnn.h"
#include <cmath>
#include <float.h> //for FLT_EPSION
#include <algorithm>//for stable_sort, sort

+ #include <string>

typedef struct NormalizedBBox_
{
    float xmin;
    float ymin;
    float xmax;
    float ymax;
    float lm[10];
} NormalizedBBox;

I have tried to include the string header in the facedetectcnn.cpp or facedetectcnn.h, both are worked 😃

Zhaojun-Liu avatar Dec 08 '22 02:12 Zhaojun-Liu