最近在写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即可生效
假设,你遇到了下面的错误
遇到的错误
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按钮可以设置里选择
下面是正常run debug起来的例子文章来源:https://www.toymoban.com/news/detail-477999.html
文章来源地址https://www.toymoban.com/news/detail-477999.html
到了这里,关于Clion 使用MFC库,本地main方法想run一下失败后的解决方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!