卸载ncurses_为什么在重新加载动态库时ncurses会失败?
ncurses是libgame.so的依赖项,而不是主可执行文件的依赖项.因此,如果卸载动态库并加载更改后的版本,还可以卸载ncurses,然后再次加载它.但是你没有重新初始化它.这就是你的程序失败的原因.
正确的解决方案是在game_unload中调用endwin()来清理ncurses的状态,然后在game_reload中重新初始化它:
static void game_reload(struct game_state *state)
{
initscr();
raw();
timeout(0);
noecho();
curs_set(0);
keypad(stdscr, TRUE);
}
static void game_unload(struct game_state *state)
{
endwin();
}
另一种解决方案是强制链接器将ncurses链接到主可执行文件.这将阻止动态链接器在卸载游戏库时卸载它.您可以通过在编译主可执行文件时在$(LDLIBS)变量之前添加-Wl, – no-as-needed标志来实现此目的:
main : main.c game.h
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $< -Wl,--no-as-needed $(LDLIBS)
如果您更喜欢此解决方案,请考虑将ncurses初始化/清除移动到main.c文件.没有技术原因,这只是一个干净的编码风格的问题.
卸载ncurses_为什么在重新加载动态库时ncurses会失败?相关推荐
- 执行应用程序或者加载动态库时出现: No such file or directory
转载:http://blog.csdn.net/qwaszx523/article/details/56488718 上面的文章提到了一种情况就是编译器不兼容的情况.我在实际工作中遇到了另一种情况:较 ...
- 加载动态库失败(loadLibrary返回为空)的几种解决办法
如果遇到了以下几种问题,也许可以在本文找到解决方法: 一.版本更新后,原本正常的功能突然无法使用了: 二.VS编译的时候,弹出"xxx(win32):已加载"xx.dll" ...
- Linux系统程序运行时加载动态库路径顺序
程序运行时加载动态库路径顺序(Linux) 在linux系统中,如果程序需要加载动态库,它会按照一定的顺序(优先级)去查找: 链接时路径(Link-time path)和运行时路径(Run-time ...
- php无法加载dll插件,php无法加载动态库怎么办
php无法加载动态库的解决办法:1.将PHP的集成包里的"libmySQL.dll"复制到system32目录下:2.将PHP的解压目录添加到PATH里:3.在Apache的配置文 ...
- 使用Poco实现插件方式加载动态库
动态库封装虚基类 //AbstractPlugin.h #ifndef __ABSTRACTPLUGIN_H__ #define __ABSTRACTPLUGIN_H__#include <st ...
- sunPKCS11加载动态库(转)
sunPKCS11加载动态库(转) http://www.cnblogs.com/sunfb/archive/2013/03/01/2938491.html 这篇文章不介绍具体的编程方法,而是针对PK ...
- tableview动态修改和删除_Ubuntu加载动态库失败的解决方案
在ubuntu下代码编译通过的情况下,经常出现运行时加载动态库出错的情况.这些问题很琐碎,不具备任何技术含量,纯属耽误时间,这也是linux系统的通病,花里胡哨,故弄玄虚. 为了减少初学者在这种无意义 ...
- php7.2 加载pgsql驱动,PHP启动:无法加载动态库PGSQL - php
我正在尝试使用运行Symfony 3.x: Ubuntu 16.04 PHP 7.0 NGinx 我想与我创建的PGSQL数据库进行交互,但出现此错误: PHP警告:PHP启动:无法加载动态库 '/u ...
- 替换Android中VM 加载动态库方式
Android 加载动态库的代码在 dalvik/vm/Native.cpp ( froyo 中是 Native.c),加载的方式就是调用 libdl 中 dlopen, dlsym 这些函数 应该可 ...
最新文章
- [渝粤教育] 中国地质大学 大学英语(1) 复习题
- Oracle包和包体
- 不同于其他写脚本的同类文章,使用软件取消赞和关注收藏
- AndroidVector初探
- sklearn 细节 —— LinearRegression、Ridge
- 【Python+OpenCV】Windows+Python3.6.0(Anaconda3)+OpenCV3.2.0安装配置
- word2vec原理_初识word2vec词向量
- webservice测试工具
- 团队开发时该如何同步数据库变更到本地
- kubernetes之初始容器(init container)
- MP算法和OMP算法及其思想与实现
- acr122 java,ACR122U中文开发文档
- 一级计算机考试比分,人工智能期末考试模拟试题一01
- Windows/Linux/MacOS下VMware Workstation Pro/Vmware Fusion虚拟机的安装使用,Vmware Tools 的安装,Vmware使用技巧与故障排除。
- python通达信自动交易_【其他】通达信程序化交易新发现,通达信dll下单
- ListView的简单使用《一》—普通图文展示案例
- 计算机课导入语,信息技术课的提问和导入技巧
- 设计一个靠谱的监控告警平台
- 功能测试需要从那几个方面入手
- c语言H文件意思,C语言中 *.c和*.h文件的区别!
热门文章
- 收支系统php,财务收支管理软件系统
- 【2022年高教杯数学建模】C题:古代玻璃制品的成分分析与鉴别方案及代码实现(四)
- Unity2D--关于2D游戏的切图小技巧
- 【联邦学习邂逅密码学系列】基于同态加密算法python代码实现
- Linux 的 Parted 指令
- 可预览的文件服务器,文件服务器 预览
- 阿里云轻量应用服务器如何快速搭建WordPress个人博客?
- linux全屏时钟应用下载,全屏时钟下载安装-全屏时钟app下载 苹果版v2.3-PC6苹果网...
- 9306 mysql41_S9306开启web功能!
- 区块链软件开发NFT平台开发移动APP开发预约预定APP定制开发