drogon icon indicating copy to clipboard operation
drogon copied to clipboard

Windows下MSVC使用静态库版本的会有链接问题.

Open HangZhouCat opened this issue 7 months ago • 0 comments

我的drogon库是通过vcpkg安装的,安装是没有问题的.如下所示:

PS C:\Users\Admin> vcpkg list|findstr drogon
drogon:x64-windows                                1.9.10              A C++14/17 based HTTP web application framework ...
drogon:x64-windows-static                         1.9.10              A C++14/17 based HTTP web application framework ...
drogon:x64-windows-static-md                      1.9.10              A C++14/17 based HTTP web application framework ...

在编译的时候,会有如下错误的产生:

1>drogon.lib(HttpResponseParser.cc.obj) : error LNK2001: 无法解析的外部符号 __std_search_1
1>drogon.lib(HttpRequestParser.cc.obj) : error LNK2001: 无法解析的外部符号 __std_search_1
1>drogon.lib(HttpFileUploadRequest.cc.obj) : error LNK2001: 无法解析的外部符号 __std_search_1
1>trantor.lib(Date.cc.obj) : error LNK2001: 无法解析的外部符号 __std_search_1
1>drogon.lib(HttpClientImpl.cc.obj) : error LNK2001: 无法解析的外部符号 __std_search_1
1>drogon.lib(HttpServer.cc.obj) : error LNK2001: 无法解析的外部符号 __std_search_1
1>drogon.lib(StaticFileRouter.cc.obj) : error LNK2001: 无法解析的外部符号 __std_search_1
1>drogon.lib(HttpRequestImpl.cc.obj) : error LNK2001: 无法解析的外部符号 __std_search_1
1>drogon.lib(HttpAppFrameworkImpl.cc.obj) : error LNK2001: 无法解析的外部符号 __std_search_1
1>drogon.lib(AccessLogger.cc.obj) : error LNK2001: 无法解析的外部符号 __std_search_1
1>drogon.lib(HttpResponseImpl.cc.obj) : error LNK2001: 无法解析的外部符号 __std_search_1
1>drogon.lib(Utilities.cc.obj) : error LNK2001: 无法解析的外部符号 __std_search_1
1>drogon.lib(HttpRequestImpl.cc.obj) : error LNK2001: 无法解析的外部符号 __std_find_end_1
1>drogon.lib(HttpResponseParser.cc.obj) : error LNK2001: 无法解析的外部符号 __std_find_end_1
1>drogon.lib(HttpRequestParser.cc.obj) : error LNK2001: 无法解析的外部符号 __std_find_end_1
1>drogon.lib(HttpFileUploadRequest.cc.obj) : error LNK2001: 无法解析的外部符号 __std_find_end_1
1>drogon.lib(HttpAppFrameworkImpl.cc.obj) : error LNK2001: 无法解析的外部符号 __std_find_end_1
1>drogon.lib(HttpResponseImpl.cc.obj) : error LNK2001: 无法解析的外部符号 __std_find_end_1
1>drogon.lib(HttpServer.cc.obj) : error LNK2001: 无法解析的外部符号 __std_find_end_1
1>drogon.lib(StaticFileRouter.cc.obj) : error LNK2001: 无法解析的外部符号 __std_find_end_1
1>drogon.lib(AccessLogger.cc.obj) : error LNK2001: 无法解析的外部符号 __std_find_last_trivial_1
1>drogon.lib(HttpUtils.cc.obj) : error LNK2001: 无法解析的外部符号 __std_find_last_trivial_1
1>drogon.lib(ConfigLoader.cc.obj) : error LNK2001: 无法解析的外部符号 __std_find_last_trivial_1
1>drogon.lib(StaticFileRouter.cc.obj) : error LNK2001: 无法解析的外部符号 __std_find_last_trivial_1
1>trantor.lib(AsyncFileLogger.cc.obj) : error LNK2001: 无法解析的外部符号 _Cnd_timedwait_for_unchecked

我尝试过x64-windows-static-md半静态和x64-windows-static纯静态版本的库. 并且也尝试修改过工程的CRT版本为MT/MD,但是均无生效.

在VS解决方案和CMake工程中都有尝试过,结果均是失败的..

都是存在找不到符号的问题,而__std_search_1函数我搜索得知,该函数好像属于微软写的STL中的内部函数,并没有在任何lib中导出.

所以我该怎么做那?

难道要手拉源码自己去编译嘛..那就丧失了vcpkg包管理的优点了.

我不太确定这是不是属于vcpkg构建port的问题,也不知道vcpkg上drogon库是不是咱们官方提供的,如果是的话,能否修复一下那?

希望drogon越做越好.

HangZhouCat avatar May 16 '25 16:05 HangZhouCat