vs2017生成能独立运行的exe + dlib19.17编译

背景:因为希望c++工程能被调用,所以想通过relese里面的exe调用。

方法:只需要设置运行时库为MT就行

在这里插入图片描述
看到另一方法是设置 静态库中使用MFC,这样生成的东西很大,分分钟1、2个g,这里直接2.3g,不好。


但是修改运行时库的前提条件是:依赖的外部库,必须也是MT的。也就是编译的时候选择的是mt。实际上平时编译下下来的库,如opencv,dlib,正常编译时,默认选择md,除非刻意去做了修改。(为什么opencv的库选mt还是md都没关系?为啥,怎么编译的)
比如使用dlib时,原先就是md的,无法修改为mt,最后重新编译了一下dlib的库位mt的。

之前编译dlib按照官网的来,老是少一堆的依赖,各种错,最后图省事,网上下的别人的,结果是md编译的。
终究没逃过要自己编译。以前看的教程,编译下来,似乎会去依赖系统的的lib文件,貌似找到了就不生成了,比如libpng.lib, z.lib等等,最后还得手动加lib,加宏,还各种缺(怪不懂cmakelist的编写)。


最后,参考博主踏莎行hyx 的文章,像他分析的,他修改了CMakelist文件。

附上dlib编译的方式:

先参考博主[踏莎行hyx]的文章修改CMakelist.txt文件,在他的基础上开启使用SSE4指令集加速,修改后的片段如下:

if (DLIB_ISO_CPP_ONLY)
      option(DLIB_JPEG_SUPPORT ${DLIB_JPEG_SUPPORT_STR} OFF)
      option(DLIB_LINK_WITH_SQLITE3 ${DLIB_LINK_WITH_SQLITE3_STR} OFF)
      option(DLIB_USE_BLAS ${DLIB_USE_BLAS_STR} OFF)
      option(DLIB_USE_LAPACK ${DLIB_USE_LAPACK_STR} OFF)
      option(DLIB_USE_CUDA ${DLIB_USE_CUDA_STR} OFF)
      option(DLIB_PNG_SUPPORT ${DLIB_PNG_SUPPORT_STR} OFF)
      option(DLIB_GIF_SUPPORT ${DLIB_GIF_SUPPORT_STR} OFF)
      #option(DLIB_USE_FFTW ${DLIB_USE_FFTW_STR} OFF)
      option(DLIB_USE_MKL_FFT ${DLIB_USE_MKL_FFT_STR} OFF)
else()
      option(DLIB_JPEG_SUPPORT ${DLIB_JPEG_SUPPORT_STR} ON)
      option(DLIB_LINK_WITH_SQLITE3 ${DLIB_LINK_WITH_SQLITE3_STR} ON)
      option(DLIB_USE_BLAS ${DLIB_USE_BLAS_STR} OFF)
      option(DLIB_USE_LAPACK ${DLIB_USE_LAPACK_STR} OFF)
      option(DLIB_USE_CUDA ${DLIB_USE_CUDA_STR} OFF)
      option(DLIB_PNG_SUPPORT ${DLIB_PNG_SUPPORT_STR} ON)
      option(DLIB_GIF_SUPPORT ${DLIB_GIF_SUPPORT_STR} ON)
      #option(DLIB_USE_FFTW ${DLIB_USE_FFTW_STR} ON)
      option(DLIB_USE_MKL_FFT ${DLIB_USE_MKL_FFT_STR} OFF)
endif()

直接命令行编译:

cd dlib-19.18
mkdir build_x64
cd build_x64
cmake .. -DUSE_SSE4_INSTRUCTIONS=ON
cmake -G "Visual Studio 15 2017 Win64" -T host=x64 ..
cmake --build . --config Release

最后就是替换config.h文件
如果你也要修改生成的库是MT的,拿vs打开dlib.sln,从属性 -> C/C+± > 运行时库里面改,重新生成即可

最后添加包含目录,附加库目录,链接器等就能直接用了。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值