CLion程序编译错误 0xC0000135
问题描述
CLion使用Cmake
进行项目代码管理和编译控制。
程序引用动态库,后编译出现错误
Process finished with exit code -1073741515 (0xC0000135)
项目目录如下:
CMakeLists.txt
文件内容如下:
cmake_minimum_required(VERSION 3.20)
project(gogmssl C)set(CMAKE_C_STANDARD 99)LINK_DIRECTORIES(lib)
include_directories(include)add_executable(gogmssl main.c)
target_link_libraries(gogmssl cyggmssl-3.dll)
这里程序使用到了gmssl
动态库,编译正常通过并且生成了可执行文件,这个可以从build
目录中看到
解决问题
0xC0000135 是由于可执行程序没有找到动态链接库导致
动态链接库在编译时是不会打包进可执行程序中,它在编译后可执行程序中只会留下连接地址,在程序启动启动时根据符号连接找到动态连接库相关代码。
那么可执行文件到哪儿找动态连接库?
- 可执行文件所在路径
- 操作系统动态库指定目录,如Linux 位于
/lib
如何解决该错误?
- 复制该链接库到可执行文件的目录
以上面程序为例,只需要把lib/cyggmssl-3.dll
复制到build
目录再次运行就可以解决问题。
静态链接
该问题实质上是因为程序使用了链接库中的代码,但是运行时没有找到代码导致。
有没有什么办法编译后程序不需要而外提供动态链接库才能运行?
- 使用静态链接库编译
静态链接实际上是库代码的一个打包整合,因此在编译时候将会和程序源代码一起编译,编译后可执行程序中就不需要依赖库文件就可以运行,因为库的代码已经在可执行文件中。
如何实现?
将动态连接库换成静态链接库,静态链接库一般以.a
结尾,例如:
add_executable(gogmssl main.c)
target_link_libraries(gogmssl libgmssl.a)
编译运行
参考文献
[1]. CSDN . Ocean&&Star . clion:win10下调用C动态库 . 2021-01-08 . https://blog.csdn.net/zhizhengguan/article/details/112373002
[2]. 博客园 . 王彬彬 . cmake 添加头文件目录,链接动态、静态库 . 2016-06-29 . https://www.cnblogs.com/binbinjx/p/5626916.html
[3]. Segmentfault . 码农的荒岛求生 . 彻底理解链接器:三,库与可执行文件 . 2018-09-18 . https://segmentfault.com/a/1190000016433897
CLion程序编译错误 0xC0000135相关推荐
- pcl的安装错误和高翔第5讲程序编译错误recipe for target 'all' failed
今天编译程序的时候 遇到了这个错误: Makefile:149: recipe for target 'all' failed 之前其实安装pcl时也遇到过,但是以为是资源或者一些小原因,就只是照着网 ...
- 程序编译错误error: stray ‘\200’ in program;error: stray ‘\343’ in program\CodeToCompile
程序编译错误error: stray '\200' in program:error: stray '\343' in program 问题分析 实验 原理 问题分析 CodeToCompile 当你 ...
- java程序编译错误属于异常吗_“Cannot find symbol”编译错误是什么意思?
"Cannot find symbol"编译错误是什么意思? 1."Cannot find symbol"错误是什么意思? 首先,它是编译错误1.这意味着,无论 ...
- python程序编译错误_Python编译错误集锦
1 IndentationError: expected an indented block Python语言是一款对缩进非常敏感的语言,给很多初学者带来了困惑,即便是很有经验的Python程序员,也 ...
- c语言做土壤湿度传感器程序,单片机土壤湿度传感器设计 程序编译错误
捕获.PNG (74.97 KB, 下载次数: 1) 没有声明,这里怎么解决 2019-12-19 16:18 上传 #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定 ...
- java编译错误 程序包javax.servlet不存在javax.servlet.*
java编译错误 程序包javax.servlet不存在javax.servlet.* 编译:javac Servlet.java 出现 软件包 javax.servlet 不存在 软件包javax. ...
- 关于预编绎网站的问题[已预编译此应用程序的错误]
关于预编绎网站的问题[已预编译此应用程序的错误] 当我们开发完项目后发布网站时,会生成一个PrecompiledApp.config文件, PrecompiledApp.config 文件主要用于跟踪 ...
- [C++]Linux之Ubuntu下编译C程序出现错误:“ stray ‘\302‘或者‘\240‘ in program”的解决方案
[C++]Linux之Ubuntu下编译C程序出现错误:" stray '\302'或者'\240' in program"的解决方案 参考文章: (1)[C++]Linux之Ub ...
- 每个c语言程序文件的编译错误被分为什么,已打印中央电大C语言考试题库(c语言小题+编程)...
C语言程序设计课程期末复习练习 一.单选题 1.在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为( A ). A. main B. MAIN C. name D. function 2.每 ...
- 解决maven 引用JDK内部类编译错误 程序包:com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler不存在...
解决maven 引用JDK内部类编译错误 程序包:com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler不存在- 网上很多帖子的解决方案 ...
最新文章
- 如何将读书与自己的生活工作结合起来?
- MaxCompute(原ODPS)使用总结-初级篇
- Java集合类框架的基本接口有哪些?
- Java中不常见的关键字 / 修饰符(volatile , native , transient)
- doe报告模板_【质量管理小组QCC活动】报告模板
- 多线程编程是后台开发人员的基本功
- 装了linux开机出现错误,[已解决]安装完,启动出现错误!
- C# sqlDataReader区别Dataset
- python中的字体英文名,CSS 中文字体的英文名称
- 不属于软件性能测试的范畴,兼容性测试_以下哪种软件测试不属于广义软件性能测试的范畴______。...
- Spinner的setOnItemSelectedListener(
- Linux打印当前目录
- 国产实时操作系统+intel x86/龙芯平台超边缘计算机方案
- 可以美化图片的方法每日分享
- python怎么制作游戏存档功能,如何在Python中创建目录的zip存档?
- 基于Xilinx artix 7的FPGA高级应用(二):千兆以太网通信(原理篇)
- [其他咚咚]Twins的专辑列表
- 写给想考金融硕士的学弟学妹
- internal/modules/cjs/loader.js:584 issue
- Python基础教程之数据类型