在Windows平台用Visual C++ 2022 (v143)编译PDCurses

综述

PDCurses是一个开源的跨平台curses库,它提供了一组函数,开发者可以用这组函数在终端(Console、Terminal)上设置光标的位置和字符的显示样式。本文介绍在Windows平台(Windows 10)上用Visual Studio 2022版本的Visual C++编译PDCurses的过程。

获取PDCurses源代码

PDCurses的相关资源如下:

  • 官方网站:https://pdcurses.org/
  • Github代码仓库页面:https://github.com/wmcbrine/PDCurses
  • Git代码仓库地址:https://github.com/wmcbrine/PDCurses.git
  • SourceForge页面:https://sourceforge.net/projects/pdcurses
  • 文档:https://pdcurses.org/docs/

当前最新稳定版为3.9版(2019年9月5日发布)。下载名称为 3.9 的Tag压缩文件并解压,即可得到3.9版的PDCurses源代码。进入wincon目录,Makefile.vc 即用于Visual C++编译的脚本。

在Windows平台用Visual C++ 2022 (v143)编译PDCurses

编译过程

X86平台编译

看了 sunny_老王文章,在 Makefile.vc 编译脚本的开头部分插入”PLATFORM = X86″,如下图所示。

在Windows平台用Visual C++ 2022 (v143)编译PDCurses

打开Visual Studio 2022的”x86 Native Tools Command Prompt for VS2022″窗口:

在Windows平台用Visual C++ 2022 (v143)编译PDCurses

进入进入wincon目录,输入以下编译命令,编译 Debug 版本:

nmake -f Makefile.vc WIDE=Y UTF8=Y DLL=Y DEBUG=Y

在Windows平台用Visual C++ 2022 (v143)编译PDCurses

不到一分钟编译完成:

在Windows平台用Visual C++ 2022 (v143)编译PDCurses

这就是我们编译的成果:

在Windows平台用Visual C++ 2022 (v143)编译PDCurses

先将这个PDCurses-3.9文件夹重命名备份,再解压出一个新的PDCurses-3.9文件夹来。同理,用以下命令编译 Release 版本:

bash;gutter:false; nmake -f Makefile.vc WIDE=Y UTF8=Y DLL=Y</p> <pre><code> 编译成功: ![在Windows平台用Visual C++ 2022 (v143)编译PDCurses](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2284104-20220225163901644-1285389733.png) 编译成果如下: ![在Windows平台用Visual C++ 2022 (v143)编译PDCurses](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2284104-20220225164011425-374771973.png) ## X64平台编译 在 Makefile.vc 编译脚本的开头部分插入"PLATFORM = X64",如下图所示。 ![在Windows平台用Visual C++ 2022 (v143)编译PDCurses](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2284104-20220225164604946-527821727.png) 打开Visual Studio 2022的"x64 Native Tools Command Prompt for VS2022"窗口,用以下命令编译 Debug 版本: ;gutter:false;
nmake -f Makefile.vc WIDE=Y UTF8=Y DLL=Y DEBUG=Y

在Windows平台用Visual C++ 2022 (v143)编译PDCurses

在Windows平台用Visual C++ 2022 (v143)编译PDCurses

在Windows平台用Visual C++ 2022 (v143)编译PDCurses

同理,用以下命令编译 Release 版本:

bash;gutter:false; nmake -f Makefile.vc WIDE=Y UTF8=Y DLL=Y</p> <pre><code> 执行结果: ![在Windows平台用Visual C++ 2022 (v143)编译PDCurses](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2284104-20220225165306298-280032475.png) ![在Windows平台用Visual C++ 2022 (v143)编译PDCurses](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2284104-20220225165344964-1753846586.png) 应用示例 ## 设置环境变量 为了便于在程序中调用PDCurses,首先,将刚刚编译好的PDCurses库文件与头文件归置到适当的目录中: ![在Windows平台用Visual C++ 2022 (v143)编译PDCurses](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2284104-20220225174204779-1756724766.png) 至于里面的文件怎么放置,当然是看 Visual C++ 的项目设置怎么方便怎么来。然后,设置系统环境变量PDCurses如下所示: ![在Windows平台用Visual C++ 2022 (v143)编译PDCurses](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2284104-20220225174604041-1934333889.png) 检查一下系统是否已经能够正确识别该环境变量: ![在Windows平台用Visual C++ 2022 (v143)编译PDCurses](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2284104-20220225175135908-1497788853.png) ## 编程实例 在 Visual Studio 2022 中建立C/C++控制台应用程序项目,项目属性中: (1) C/C++ | General | Additional Include Directories 新增条目:$(PDCurses)\include ![在Windows平台用Visual C++ 2022 (v143)编译PDCurses](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2284104-20220225180207949-395191783.png) (2) Linker | General | Additional Library Directories 新增条目:$(PDCurses)\LIB\$(Platform)\$(Configuration) ![在Windows平台用Visual C++ 2022 (v143)编译PDCurses](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2284104-20220225200142277-182766578.png) (3) Linker | Input | Additional Dependencies 新增:pdcurses.lib ![在Windows平台用Visual C++ 2022 (v143)编译PDCurses](https://johngo-pic.oss-cn-beijing.aliyuncs.com/articles/20230605/2284104-20220225200341622-370490950.png) (4) Build Events | Post-Build Event | Command Line 新增: ;gutter:false;
copy "$(PDCurses)\DLL\$(Platform)\$(Configuration)\pdcurses.dll" "$(TargetDir)"

在Windows平台用Visual C++ 2022 (v143)编译PDCurses

(5) C/C++ | Preprocessor | Preprocessor Definitions 新增:PDC_DLL_BUILD

在Windows平台用Visual C++ 2022 (v143)编译PDCurses

(6) 编写代码:

cpp;gutter:true;</p> <h1>include</h1> <h1>include</h1> <h1>include "Curses/curses.h"</h1> <p>void initialize(); void shutdown();</p> <p>int main() { char ch = '\n'; char* message = "Hello, World!";</p> <pre><code>initialize(); do { mvprintw(LINES / 2, (COLS - (int)strlen(message)) / 2, message); refresh(); ch = getch(stdscr); } while (ch != 'Q' && ch != 'q'); shutdown(); return 0; </code></pre> <p>}</p> <p>void initialize() { initscr(); start_color(); raw(); cbreak(); noecho(); curs_set(0); srand((unsigned int)time(NULL)); }</p> <p>void shutdown() { endwin(); }

执行结果:

在Windows平台用Visual C++ 2022 (v143)编译PDCurses

参考文献

(完)

Original: https://www.cnblogs.com/yapingxin/p/15936414.html
Author: 辛亚平
Title: 在Windows平台用Visual C++ 2022 (v143)编译PDCurses

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585482/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Identity Server 4资源拥有者密码认证控制访问API(二)

    基于上一篇文章中的代码进行继续延伸,只需要小小的改动即可,不明白的地方可以先看看本人上一篇文章及源码: Identity Server 4客户端认证控制访问API 一、 Quick…

    Linux 2023年6月13日
    0111
  • mysql-高可用架构:MHA

    mysql-高可用架构:MHA 1. MHA简介 MHA(Master High Availability)是由日本人yoshinorim开发的一款成熟且开源的MySQL高可用程序…

    Linux 2023年6月13日
    085
  • Java的jinfo命令使用详解

    jinfo命令简介 jinfo(Java Virtual Machine Configuration Information)是JDK提供的一个可以实时查看Java虚拟机各种配置参…

    Linux 2023年5月27日
    0111
  • python一键探测编码

    程序功能 按文件输出编码or按编码输出文件 源码 主要代码功能 1.实现文件遍历 2.chardet获取编码 3.传参,对符合编码条件的文件输出 4.打开文件夹选择对话框 程序功能…

    Linux 2023年6月7日
    0126
  • gem 更换源及目前能用的源

    1.查看gem源 gem source -l 2.删除源 gem source -r 3.添加源 gem sources –add Original: https://…

    Linux 2023年6月8日
    0107
  • 九、磁盘管理

    (一)磁盘基础知识磁盘–硬盘(机械,固态) 磁盘结构https://www.jianshu.com/p/cf100e39ccdf 扇区、磁道、柱面 扇区默认大小是512…

    Linux 2023年6月7日
    0117
  • WOE编码与IV值

    参考:WOE与IV值浅谈机器学习-变量筛选之IV值和WOE 0. Introduction WOE (weight of evidence): 证据权重IV (informatio…

    Linux 2023年6月13日
    0154
  • JavaScript快速入门-01-环境搭建

    1 环境搭建 搭建JavaScript开发环境有很多种组合,本文中采用 Visual Studio Code和Node.js的组合,详细如下所示: 1.1 Node.js环境搭建 …

    Linux 2023年6月7日
    090
  • 没那么简单的单例模式

    作者:小牛呼噜噜 | https://xiaoniuhululu.com计算机内功、JAVA底层、面试相关资料等更多精彩文章在公众号「小牛呼噜噜 」 什么是单例 单例的应用场景 单…

    Linux 2023年6月6日
    0117
  • 数据库事务的四大特性(ACID)

    什么是数据库事务? 事务,就是一系列操作的整体,其结果就是这一系列操作要么全部成功,要么全部失败。 譬如说,一个经典的例子–转账。A要转帐给B 100块钱,要经历以下步…

    Linux 2023年6月6日
    097
  • map_set使用说明

    map_set使用说明 map的底层结构大致是一个哈希表,set的底层结构大致是一个红黑树 不代表全部! set #include"map_set.h" //s…

    Linux 2023年6月13日
    095
  • Centos7安装Redis

    下载 wget http://download.redis.io/releases/redis-5.0.0.tar.gz 解压 tar xvf redis-5.0.0.tar.gz…

    Linux 2023年5月28日
    092
  • 每天一个 HTTP 状态码 203

    203 ‘Non-Authoritative Informative’ 直译过来是「非权威信息」的意思… 203 Non-Authoritati…

    Linux 2023年6月7日
    0102
  • 方法的深度理解

    权限修饰符 返回值类型 类名(行参列表 )throws 异常的类型{ //方法体 约定俗称:子类中叫重写的方法,父类中叫被重写的方法。 ①子类重写的方法名和行参列表和父类被重写的方…

    Linux 2023年6月14日
    0100
  • Unity中Button的一些基础用法

    Button的功能探究 Interactable(是否可交互) 可交互简单来说所指的是按钮能否被点击,有true和false两种状态 public Button testButto…

    Linux 2023年6月7日
    0119
  • tomcat服务器和servlet的基本认识

    今天下午在知乎看见了一个老哥的文章,写的是servlet写的很好,以前我对Javaweb方面的理解比较混乱今天看了这位老哥的文章后受益匪浅,知乎名叫:bravo1988​ 里面也有…

    Linux 2023年6月6日
    0109
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球