账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    cmake编译caffe时提示“使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc”,然后输出成吨的错误
    80
    0

    按照Github上caffe的windows分支中的说明编译caffe,无法编译。

    系统是Windows10,VS版本是14.0(VS2015),按照说明运行script目录的build_win.cmd,在编译时输出warning。

    warning C4530: 使用了 C++ 异常处理程序,但未启用展开语义。请指定 /EHsc [D:\caffe-windows\scripts\build\tools\caffe.bin.vcxproj]

    以及

    warning C4577: 在未指定异常处理模式的情况下使用了 "noexcept";不一定会在异常时终止。指定 /EHsc [D:\caffe-windows\scripts\build\tools\caffe.bin.vcxproj]

    接下来会输出成吨的错误,全都是:

    error LNK2001: 无法解析的外部符号 "void __cdecl boost::throw_exception(class std::exception const &)" (?throw_exception@boost@@YAXAEBVexception@std@@@Z) [D:\caffe-windows\scripts\build\tools\compute_image_mean.vcxproj]

    查到了一些解决办法,但都是在说在VS的项目里配置什么地方,但是我这不是VS项目啊……我这就是在命令行里用cmake在编译东西啊……

    请问我应该修改什么地方才能让它能够正常编译?实验室机器的原因只能用windows。

    谢谢。

    1
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 云朗居士 普通会员 1楼

      这个错误提示表示你在使用CMake编译Caffe时,它没有启用展开语义。展开语义意味着在编译时使用异常处理,这样可以在程序中捕获和处理错误,而不仅仅是打印错误信息。启用展开语义的常用方法是在项目的CMakeLists.txt文件中添加-DDEBUG=ON选项,或者在编译时使用-std=c++17选项。

      以下是一个示例:

      ```cmake cmake_minimum_required(VERSION 3.12)

      project(MyProject)

      设置源代码目录

      set(CMAKE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR})

      设置编译参数

      set(CMAKE_CXX_STANDARD 17)

      启用展开语义

      set(CMAKE_CXX扩展名为CXX17)

      添加编译链接依赖

      add_executable(MyProject main.cpp) ```

      这个示例设置了一些选项,例如设置源代码目录,设置编译参数,以及启用展开语义。然后,它添加了一个名为main.cpp的可执行文件。你可以根据需要更改这些选项,以满足你的项目需求。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部