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会失败?相关推荐

  1. 执行应用程序或者加载动态库时出现: No such file or directory

    转载:http://blog.csdn.net/qwaszx523/article/details/56488718 上面的文章提到了一种情况就是编译器不兼容的情况.我在实际工作中遇到了另一种情况:较 ...

  2. 加载动态库失败(loadLibrary返回为空)的几种解决办法

    如果遇到了以下几种问题,也许可以在本文找到解决方法: 一.版本更新后,原本正常的功能突然无法使用了: 二.VS编译的时候,弹出"xxx(win32):已加载"xx.dll" ...

  3. Linux系统程序运行时加载动态库路径顺序

    程序运行时加载动态库路径顺序(Linux) 在linux系统中,如果程序需要加载动态库,它会按照一定的顺序(优先级)去查找: 链接时路径(Link-time path)和运行时路径(Run-time ...

  4. php无法加载dll插件,php无法加载动态库怎么办

    php无法加载动态库的解决办法:1.将PHP的集成包里的"libmySQL.dll"复制到system32目录下:2.将PHP的解压目录添加到PATH里:3.在Apache的配置文 ...

  5. 使用Poco实现插件方式加载动态库

    动态库封装虚基类 //AbstractPlugin.h #ifndef __ABSTRACTPLUGIN_H__ #define __ABSTRACTPLUGIN_H__#include <st ...

  6. sunPKCS11加载动态库(转)

    sunPKCS11加载动态库(转) http://www.cnblogs.com/sunfb/archive/2013/03/01/2938491.html 这篇文章不介绍具体的编程方法,而是针对PK ...

  7. tableview动态修改和删除_Ubuntu加载动态库失败的解决方案

    在ubuntu下代码编译通过的情况下,经常出现运行时加载动态库出错的情况.这些问题很琐碎,不具备任何技术含量,纯属耽误时间,这也是linux系统的通病,花里胡哨,故弄玄虚. 为了减少初学者在这种无意义 ...

  8. php7.2 加载pgsql驱动,PHP启动:无法加载动态库PGSQL - php

    我正在尝试使用运行Symfony 3.x: Ubuntu 16.04 PHP 7.0 NGinx 我想与我创建的PGSQL数据库进行交互,但出现此错误: PHP警告:PHP启动:无法加载动态库 '/u ...

  9. 替换Android中VM 加载动态库方式

    Android 加载动态库的代码在 dalvik/vm/Native.cpp ( froyo 中是 Native.c),加载的方式就是调用 libdl 中 dlopen, dlsym 这些函数 应该可 ...

最新文章

  1. [渝粤教育] 中国地质大学 大学英语(1) 复习题
  2. Oracle包和包体
  3. 不同于其他写脚本的同类文章,使用软件取消赞和关注收藏
  4. AndroidVector初探
  5. sklearn 细节 —— LinearRegression、Ridge
  6. 【Python+OpenCV】Windows+Python3.6.0(Anaconda3)+OpenCV3.2.0安装配置
  7. word2vec原理_初识word2vec词向量
  8. webservice测试工具
  9. 团队开发时该如何同步数据库变更到本地
  10. kubernetes之初始容器(init container)
  11. MP算法和OMP算法及其思想与实现
  12. acr122 java,ACR122U中文开发文档
  13. 一级计算机考试比分,人工智能期末考试模拟试题一01
  14. Windows/Linux/MacOS下VMware Workstation Pro/Vmware Fusion虚拟机的安装使用,Vmware Tools 的安装,Vmware使用技巧与故障排除。
  15. python通达信自动交易_【其他】通达信程序化交易新发现,通达信dll下单
  16. ListView的简单使用《一》—普通图文展示案例
  17. 计算机课导入语,信息技术课的提问和导入技巧
  18. 设计一个靠谱的监控告警平台
  19. 功能测试需要从那几个方面入手
  20. c语言H文件意思,C语言中 *.c和*.h文件的区别!

热门文章

  1. 收支系统php,财务收支管理软件系统
  2. 【2022年高教杯数学建模】C题:古代玻璃制品的成分分析与鉴别方案及代码实现(四)
  3. Unity2D--关于2D游戏的切图小技巧
  4. 【联邦学习邂逅密码学系列】基于同态加密算法python代码实现
  5. Linux 的 Parted 指令
  6. 可预览的文件服务器,文件服务器 预览
  7. 阿里云轻量应用服务器如何快速搭建WordPress个人博客?
  8. linux全屏时钟应用下载,全屏时钟下载安装-全屏时钟app下载 苹果版v2.3-PC6苹果网...
  9. 9306 mysql41_S9306开启web功能!
  10. 区块链软件开发NFT平台开发移动APP开发预约预定APP定制开发