另外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.libvs创建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 再次编译运行成功输出: