Clion 使用MFC库,本地main方法想run一下失败后的解决方法

这篇具有很好参考价值的文章主要介绍了Clion 使用MFC库,本地main方法想run一下失败后的解决方法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近在写JNI,打算用java去调 C 或 C++ 去操作操作系统底层的API。MFC编程已经算是一个非常老的技术了。在MFC库中提供了大量的windows-api,故准备写JNI去调用windows底层api。

因为习惯使用Jetbrains家的产品,对于快捷键从Idea系列无缝对接所以选择了Clion作为C的编写。
当然这里也可以选择Visual Studio

使用Clion写C的话,你需要 配置编译环境(按照这篇文章进行配置即可)
如果你不想麻烦可以使用Visual Studio下载好 MFC库,这里添加Visual studio的选项,把Environment选择到VS的目录,重启Clion即可生效
Clion 使用MFC库,本地main方法想run一下失败后的解决方法
假设,你遇到了下面的错误

遇到的错误

NMAKE : fatal error U1077: “D:\PROGRA~2\MIB055~1\2022\COMMUN~1\VC\Tools\MSVC\1430~1.307\bin\Hostx86\x86\cl.exe”: 返回代码“0x2”
NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\bin\HostX86\x86\nmake.exe"”: 返回代码“0x2”
NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\bin\HostX86\x86\nmake.exe"”: 返回代码“0x2”
NMAKE : fatal error U1077: “"D:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.30.30705\bin\HostX86\x86\nmake.exe"”: 返回代码“0x2”

解决方法

需要加上下面这几行代码,作用就是支持MFC,需要注意(JHelloWorld是我的项目名,你需要改成自己的项目名)

set(CMAKE_MFC_FLAG 2)
set_target_properties(JHelloWorld PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")
target_compile_definitions(JHelloWorld PRIVATE
        -DWIN32
        -D_DEBUG
        -D_WINDOWS
        -D_VC80_UPGRADE=0x0600
        -D_UNICODE
        -DUNICODE
        -D_AFXDLL
        )

此前如果你没有设置下面这个配置,那么想要run起来的话需要加上

(JHelloWorld是我的项目名,你需要改成自己的项目名,all_handle.cpp 是带main方法的源文件,如果你想要跑这个源文件的话,需要在这行加上源文件的路径我这里放在了根路径所以直接文件名了)

add_executable(JHelloWorld all_handle.cpp)

需要注意的是,这行需要加在上面的配置之上,否则保存后会直接报错


完整的CMakeLists.txt(参考)

JHelloWorld 是项目名,自行替换。
all_handle.cpp是带main的源文件,自行替换

cmake_minimum_required(VERSION 3.17)
project(JHelloWorld)

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_MFC_FLAG 2)

add_executable(JHelloWorld all_handle.cpp)

# 如果想要生成dll库,可以将下面的注释打开,注意JHelloWorld是我的项目名,
# top_yumbo_jni_JavaCallCpp.cpp是jni用的
# add_executable(jni ${SOURCE_FILES})
#add_library(
#        JHelloWorld
#        SHARED
#        top_yumbo_jni_JavaCallCpp.cpp
#)
#target_link_libraries(JHelloWorld) # 编译的目标,前面有add lib 所以这里会将前面add的lib生成dll文件


set_target_properties(JHelloWorld PROPERTIES LINK_FLAGS "/SUBSYSTEM:WINDOWS")
target_compile_definitions(JHelloWorld PRIVATE
        -DWIN32
        -D_DEBUG
        -D_WINDOWS
        -D_VC80_UPGRADE=0x0600
        -D_UNICODE
        -DUNICODE
        -D_AFXDLL
        )

完成上面设置后就可以正常run了,如果没有run按钮可以设置里选择
Clion 使用MFC库,本地main方法想run一下失败后的解决方法
Clion 使用MFC库,本地main方法想run一下失败后的解决方法
下面是正常run debug起来的例子

Clion 使用MFC库,本地main方法想run一下失败后的解决方法文章来源地址https://www.toymoban.com/news/detail-477999.html

到了这里,关于Clion 使用MFC库,本地main方法想run一下失败后的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • HttpRunner3.x 源码解析(2)-main_run执行用例

    当在终端运行输入httprunner run 目录或者文件名,则会调用main_run函数,并传入目录/文件名来执行测试用例。 对于extra_args中的值,如果在os.path.exists不存在,则将其加入extra_args_new中。 如果存在,则将其加入用例列表  tests_path_list 1)如果列表  tests_path_list长度为0,说明用例文

    2023年04月09日
    浏览(22)
  • no main manifest attribute, in app.jar(Docker run命令出错)

    解决no main manifest attribute, in app.jar 环境:SpringBoot2.6.13+java8 重点 : pom.xml文件是IDEA自动配的,然后出错 我在将一个SpringBoot程序打包成镜像部署到Docker容器上,然后执行run命令启动容器: springboot-test:1.0是我的镜像 出现报错: 我排查出来问题就在pom.xml文件中我画红线的这一句 改为下

    2024年02月03日
    浏览(64)
  • 自建K8S一年多没用,忽然想使用下。kubelet启动失败,报错:main process exited, code=exited, status=255/n/a

    通过system status kubelet 查看报错,基本没有什么有效信息,所以使用 就可以看到以下报错:Jan 16 20:49:17 master kubelet[3824]: I0116 20:49:17.402577    3824 server.go:425] Version: v1.15.0 Jan 16 20:49:17 master kubelet[3824]: I0116 20:49:17.402770    3824 plugins.go:103] No cloud provider specified. Jan 16 20:49:17 master k

    2024年01月24日
    浏览(39)
  • MFC TabControl使用方法

    1.新建放置控件对话框 新建1个放置TabControl的Dialog主对话框,在此对话框中拖入1个TabControl控件,为控件绑定变量类型为:CTabCtrl,变量名为m_TabCtrl_Four。 2.新建子对话框并新建类 新建两个作为TabControl控件界面的Dialog子对话框,并为其新建两个对话框类。 3.设置子对话框属性

    2024年02月07日
    浏览(35)
  • 【rust/egui】(二)看看template的main函数:日志输出以及eframe run_native

    rust新手,egui没啥找到啥教程,这里自己记录下学习过程 环境:windows11 22H2 rust版本:rustc 1.71.1 egui版本:0.22.0 eframe版本:0.22.0 上一篇:这里 首先让我们看看 main.rs 中有些什么 在 eframe 中使用的日志库为 log 以及 env_logger ,其日志等级有5个: 我们可以在main函数中添加测试一

    2024年02月13日
    浏览(31)
  • SpringSecurity6 | 登录失败后的跳转

    ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: 循序渐进学SpringSecurity6 ✨特色专栏: MySQL学习 🥭本文内容: SpringSecurity6 | 失败后的跳转 📚个人知识库: Leo知识库,欢迎大家访问 学习参考

    2024年02月03日
    浏览(30)
  • 本地clion开发/优雅地调试,并实时同步远程服务器

    实现本地Clion写项目,远程连接Ubuntu服务器,并将本地所做的修改实时同步到Ubuntu上 一、Ubuntu服务器 开启sshd服务 安装工具链,g++,gcc,make,cmake,gdb,(apt install安装的版本不符,就去搜其他方式安装适合的版本) 二、本地Win10 参考windows clion安装 配置Ubuntu服务器: 文件

    2024年02月04日
    浏览(33)
  • 干货!记一次接口调用失败后的排查思路

    特此声明:以下聊天记录为老师和学员的真实沟通记录,仅用于做典型技术问题分享,敏感信息已打码。 VIP学员可以享受永久答疑服务。 2023年2月24日,早上刚到公司,有学员发来问题 :有个http接口调不通 问题截图如下: 这个接口是需要签名加密的,现在接口返回code:1,签

    2024年02月11日
    浏览(37)
  • 单点登录:CAS使用springboot main方法启动cas-server

    1.下载demo 2.使用eclipse导入maven项目。此次我是用的spring tool suite 4导入的。 导入时会用较长时间,10分钟吧。需要下载很多资源。 3.报错,提示缺少jar包 4.其他地方下载该jar包。我是在cas-server-webapp-tomcat-5.3.9.war中解压中找到xmlsectool-2.0.0.jar。 5.安装jar。 6.更新项目。 pom.xml右键

    2024年02月09日
    浏览(47)
  • 本地前端项目使用gitee仓库外链图片加载失败

    错误: 本地的前端项目,比如vue,纯html使用 img/ 标签加载gitee保存的图片文件的时候,浏览器加载失败。 但是gitee可以正常访问图片  解决办法: 在index.html中加入meta标签就可以完美解决 referrer 策略是一种 网络安全手段 ,在请求中会带有referrer。 要是vue项目的话,直接去

    2024年02月16日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包