当前位置: 首页 > news >正文

做网站好看的背景图片手机网站优化怎么做

做网站好看的背景图片,手机网站优化怎么做,专门做茶叶会的音乐网站,做设计需要知道的几个网站▒ 目录 ▒🛫 问题描述1️⃣ 多版本vs报错指定VS路径2️⃣ error LNK2001: 问题排查通过IDA打开lib文件,确认导出内容查看源码增加参数--editable,重新编译3️⃣ error LNK2001: 外部符号__imp_?close_...去除__imp_🛬 结论vcpkg…

▒ 目录 ▒

    • 🛫 问题
      • 描述
    • 1️⃣ 多版本vs报错
      • 指定VS路径
    • 2️⃣ error LNK2001: 问题排查
      • 通过IDA打开lib文件,确认导出内容
      • 查看源码
      • 增加参数--editable,重新编译
    • 3️⃣ error LNK2001: 外部符号`__imp_?close_...`
      • 去除`__imp_`
    • 🛬 结论
      • vcpkg卸载重载
      • 编译指定版本的源码(未验证)
      • 修改源码进行编译
    • 📖 参考资料

🛫 问题

描述

cpprestsdk之前编译过32位,已经踩了一些坑,本以为64位编译会顺风顺水,然而事与愿违,特此记录几个问题。
最终编译命令为vcpkg install cpprestsdk[websockets]:x64-windows-static --recurse --editable

1️⃣ 多版本vs报错

目标编译为2019,但是由于重装系统后,直接安装了2022的vs,导致没有了2019的x64 Native Tools Command Prompt for VS 2019环境,后又安装2019才解决问题。
在这里插入图片描述

指定VS路径

vs2019和2022共存的情况下,直接运行install命令,将报下面错误。
这个错误信息,一开始看的挺头晕,后来认真看了错误提示,发现vcpkg找到的路径是2022,但是它也给出了文档连接https://github.com/microsoft/vcpkg/blob/master/docs/users/triplets.md#VCPKG_VISUAL_STUDIO_PATH,可以解决该问题。
在这里插入图片描述

小编以安装根目录J:\_ALL\CODE\vcpkg\vcpkg\x64-windows-static的编译目标为例,所以我们需要修改的文件是J:\_ALL\CODE\vcpkg\vcpkg\triplets\x64-windows-static.cmake。修改内容如下:

set(VCPKG_VISUAL_STUDIO_PATH "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Community")
set(VCPKG_PLATFORM_TOOLSET v142)

2️⃣ error LNK2001: 问题排查

运行install命令,生成的lib进行集成的时候,提示未找到__imp_?close_pending_tasks_with_error@websocket_client_task_impl@details@client@websockets@web@@QEAAXAEBVwebsocket_exception@345@@Z(web::websockets::client::details::websocket_client_task_impl::close_pending_tasks_with_error)的错误。
各种搜索,没找到解决方案,只能编译链接原理通过一步步排查了

通过IDA打开lib文件,确认导出内容

通过删选关键字web::websockets::client::details::websocket_client_task_impl::,查看导出列表,的确没有导出函数close_pending_tasks_with_error
在这里插入图片描述

查看源码

搜索源码,定位到源码文件 J:\_ALL\CODE\vcpkg\vcpkg\buildtrees\cpprestsdk\src\ecb9e168c5-96a8d6ba89.clean\Release\src\websockets\client\ws_client.cpp
函数close_pending_tasks_with_error的编译条件是#if !defined(CPPREST_EXCLUDE_WEBSOCKETS),也就是说,当不定义CPPREST_EXCLUDE_WEBSOCKETS的时候就能将函数编译进去。

定位宏定义,最终在文件J:\_ALL\CODE\vcpkg\vcpkg\buildtrees\cpprestsdk\src\ecb9e168c5-96a8d6ba89.clean\Release\include\cpprest\details\basic_types.h中找到下面代码。

#if defined(_WIN32)
// Include on everything except Windows Desktop ARM, unless explicitly excluded.
#if !defined(CPPREST_EXCLUDE_WEBSOCKETS)
#if defined(WINAPI_FAMILY)
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) && defined(_M_ARM)
#define CPPREST_EXCLUDE_WEBSOCKETS
#endif
#else
#if defined(_M_ARM)
#define CPPREST_EXCLUDE_WEBSOCKETS
#endif
#endif
#endif
#endif

不必管这些定义,在代码最后直接取消宏定义

#undef CPPREST_EXCLUDE_WEBSOCKETS

增加参数–editable,重新编译

--editable的含义是不清空代码,直接编译,最终命令为:
vcpkg install cpprestsdk[websockets]:x64-windows-static --recurse --editable
再次通过IDA查看导出函数,可以看到lib中已经有函数close_pending_tasks_with_error了。

ps: 貌似参数 --no-downloads也是可以的。

3️⃣ error LNK2001: 外部符号__imp_?close_...

去除__imp_

通过上面的操作,命名已经将函数编译到lib中了,为啥还是报错呢?想来想去只能是编译的类型不一样,通过BCompare工具,比较两个函数名,可以看出,需要的函数带__imp_
在这里插入图片描述

查资料,发现:如果函数声明增加了__declspec(dllimport) ,链接的时候函数名会加上__imp_前缀,所以如果链接静态库, 函数的声明不用增加__declspec(dllimport) 。如果链接动态库,再增加__declspec(dllimport)。
定位到函数声明,可以看到声明为_ASYNCRTIMP void close_pending_tasks_with_error(const websocket_exception& exc);,查看_ASYNCRTIMP的定义:
在这里插入图片描述

所以在项目中,增加_NO_ASYNCRTIMP即可。
也可以在引入cpprest头文件之前,定义_NO_ASYNCRTIMP宏,如下图所示:
在这里插入图片描述

🛬 结论

解决思路:

  • 确认lib中包含目标函数
  • 确保目标函数编译后的名字一模一样。

vcpkg卸载重载

开发过程中,经常要修改参数,重新编译库,已经安装的库无法重新安装,只能先卸载才能继续安装。
在这里插入图片描述

vcpkg remove cpprestsdk:x64-windows-static  --recurse

编译指定版本的源码(未验证)

通过命令.\vcpkg x-history cpprestsdk,查看cpprestsdk历史版本。
在这里插入图片描述

小编以安装根目录J:\_ALL\CODE\vcpkg\vcpkg\为例,所以我们需要修改的文件是J:\_ALL\CODE\vcpkg\vcpkg\ports\cpprestsdk\vcpkg.json。修改内容如下:
在这里插入图片描述

也就是指定字段version-semver
在这里插入图片描述

参考资料:

  • 随心所欲地对vcpkg依赖进行版本控制 https://zhuanlan.zhihu.com/p/352709760
  • https://learn.microsoft.com/zh-cn/vcpkg/users/versioning

修改源码进行编译

vcpkg install每次默认都将代码删除,然后再下载解压代码,所以直接修改代码会被清除。
执行命令中,增加参数--editable,将不再删除代码。命令如下所示:
vcpkg install cpprestsdk[websockets]:x64-windows-static --recurse --editable

📖 参考资料

  • 【vcpkg】cpprestsdk编译链接及实战 Chrome Devtool Protocol https://blog.csdn.net/kinghzking/article/details/125772160
  • vcpkg环境变量官方文档 https://github.com/microsoft/vcpkg/blob/master/docs/users/triplets.md#VCPKG_VISUAL_STUDIO_PATH
  • VCPKG 环境变量 https://www.cnblogs.com/vcpkg/p/15019968.html
  • vcpkg版本说明: https://learn.microsoft.com/zh-cn/vcpkg/users/versioning
http://www.yayakq.cn/news/62751/

相关文章:

  • Vs做的网站调试时如何适应网页网站备案好
  • html做成网页自己有网站怎么做优化
  • 互联网网站 数据库dz采集wordpress
  • 建网站盈利的几种方式网站建设项目实训报告
  • 在小型网站建设小组中的基本网站流程图设计
  • 网站 mvc 设计深色调网站
  • wap网站制作怎么做怎么制作网站准考证在网上打印
  • 教育培训网站建设做网站开发的提成多少钱
  • 一个空间安装多个织梦网站系统网络营销策划活动方案
  • 回忆网站怎么做网站建设与制作布局
  • 嘉兴网站建设公司就找嘉乐网络seo怎么读
  • 滕州 网站 建设江西省城乡建设陪训网官方网站
  • 免费奖励的网站有哪些四川做网站价格
  • 新乡企业网站排名优化交友高端网站建设
  • 山东有实力的网站开发多少钱wordpress本地评论插件
  • 怎么做淘宝客网站推广网站建设学校培训班
  • 南宁建设局网站百度账户安全中心
  • 咖啡网站建设策划书济南seo的排名优化
  • 公司网站域名主机网页设计模板图片素材
  • 保定网站关键词优化wordpress怎么私人媒体库
  • 网页图片怎么居中网站针对爬虫爬取做的优化
  • 邢台pc网站开发做网站珊瑚橙颜色怎么搭配好看
  • html网站设计网站发的文章如何优化
  • 淄博企业建网站政务网站集约化建设
  • 指定网站长期建设 运营计划微信公众号的h5网站开发6
  • 网站开发必学的技巧有哪些银行网站模板免费下载
  • 网站支付宝怎么做的辽宁大连直客部七部
  • 网站模版建设商城网站html模板
  • 网站开发设计公司网站注销主体填写原因
  • 外贸公司网站如何免费推广福田瑞沃es3报价及图片