vs2017下搭建libuv环境
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/monitor1394/article/details/77734769
- 下载libuv:https://github.com/libuv/libuv
- 下载gyp(https://github.com/turbulenz/gyp)解压后放在libuv/build下
- gyp安装需要python环境,下载Python2.x(https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi)安装并配置环境变量
- gyp安装:cmd进入libuv/build/gpy下,执行:setup.py install
- libuv安装:执行vcbuild.bat
@remLook for Visual Studio 2017
if notdefined VS150COMNTOOLS goto vc-set-2013
if notexist "%VS150COMNTOOLS%\..\..\VC\Auxiliary\Build\vcvarsall.bat" gotovc-set-2013
call"%VS150COMNTOOLS%\..\..\VC\Auxiliary\Build\vcvarsall.bat"%vs_toolset%
setGYP_MSVS_VERSION=2017
gotoselect-target
另外libuv\build\gyp\pylib\gyp下的MSVSVersion.py也要增加vs版本
如报Warning:Visual Studio not found,要检查vs对应版本的环境变量是否已设置,另外vcvarsall.bat所在的位置可能随版本而不一样。
设置gyp_uv.py中的vs版本:
os.environ['GYP_MSVS_VERSION'] = '2017'
以上配置好后重新执行vcbuild.bat成功的话会生成对应的工程文件:
libuv.vcxproj
libuv.vcxproj.filters
run-benchmarks.vcxproj
run-benchmarks.vcxproj.filters
run-tests.vcxproj
run-tests.vcxproj.filters
uv.sln
- 打开uv.sln编译工程,可能需要修改工程的平台工具集和Window SDK版本,并以成功后会生成include目录和Debug\lib下的libuv.lib
- vs创建Win32 Console工程,把include和libuv.lib复制到根目录下
- 包含头文件:右键项目->属性->C/C++->常规的附加包含目录为:include;%(AdditionalIncludeDirectories)
- 测试例子:使用uv_work_t进行cpu密集计算
#include"stdafx.h"
#include"uv.h"
#define FIB_UNTIL 38
uv_loop_t *loop;
longfib_(long t)
{
if(t ==0 || t ==1) return 1;
else return fib_(t -1) +fib_(t -2);
}
voidfib(uv_work_t *req)
{
int n = *(int *)req->data;
long fib =fib_(n);
fprintf(stderr,"%dth fibonacci is %lu\n",n,fib);
}
voidafter_fib(uv_work_t *req,int status)
{
fprintf(stderr,"Done calculating %dth fibonacci\n",*(int *)req->data);
}
int main()
{
loop =uv_default_loop();
int data[FIB_UNTIL];
uv_work_t req[FIB_UNTIL];
for (int i =0; i <FIB_UNTIL; i++) {
data[i] = i;
req[i].data = (void *)&data[i];
uv_queue_work(loop,&req[i],fib,after_fib);
}
return uv_run(loop,UV_RUN_DEFAULT);
}
- 编译报错:
- 添加依赖项和忽略LIBCMTD库:
确保添加了以下几个依赖项:
libuv.lib
Ws2_32.lib
iphlpapi.lib
Userenv.lib
Psapi.lib
注:如果是编译x64的要加几个依赖:
advapi32.lib
iphlpapi.lib
psapi.lib
shell32.lib
userenv.lib
ws2_32.lib
user32.lib
- 再次编译运行成功输出:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)