vs2017下搭建libuv环境

xiaoxiao2021-02-28  117

下载libuvhttps://github.com/libuv/libuv下载gyp(https://github.com/turbulenz/gyp)解压后放在libuv/buildgyp安装需要python环境,下载Python2.x(https://www.python.org/ftp/python/2.7.13/python-2.7.13.msi)安装并配置环境变量gyp安装:cmd进入libuv/build/gpy下,执行:setup.py installlibuv安装:执行vcbuild.bat     如cmd一闪而过的问题,打开vcbuild.bat检查是否有对应的vs版本,没有则加上,如我用的vs2017需要加上配置:

@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.libvs创建Win32 Console工程,把includelibuv.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 再次编译运行成功输出:

 

 

转载请注明原文地址: https://www.6miu.com/read-20139.html

最新回复(0)