在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)

大家都在看

  • Flask聚合函数(基本聚合函数、分组聚合函数、去重聚合函数))

    1.基本聚合函数(sun/count/max/min/avg) 语法 注意:使用db.session.query()括号内必须要写东西,不能空着,不然都不知道从哪张表中查询数据 代…

    Linux 2023年6月8日
    082
  • Linux 命令行设置网络代理

    echo $SHELL/usr/bin/zsh 根据当前的shell类型来设置,我这里以zsh为例,vim ~/.zshrc export ALL_PROXY=”htt…

    Linux 2023年6月6日
    0178
  • go将青龙面板里面的脚本文件都下载到本地

    纯粹练手用的,大家轻喷青龙面板的脚本文件可以下载到本地,这样的话自己可以研究一下对应的脚本文件,能学到更多的知识,原理其实很简单,F12一下就知道了,青龙面板使用Request H…

    Linux 2023年6月7日
    0115
  • 【原创】Linux PCI驱动框架分析(二)

    背 景 Read the fucking source code! –By 鲁迅 A picture is worth a thousand words. &#8211…

    Linux 2023年6月8日
    094
  • PHP利用Apache、Nginx的特性实现免杀Webshell

    环境函数用法 nginx get_defined_vars() 返回由所有已定义变量所组成的数组 apache getallheaders() 获取全部 HTTP 请求头信息 ap…

    Linux 2023年5月28日
    071
  • 读《软件测试的艺术》——第一章

    《软件测试的艺术》作为元老级别的测试理论书籍,在业内非常经典且有口皆碑,书中提出的 软件测试为求错而非求证的观点至今仍在学术界被广泛讨论。本书还为计算机界一个最为重要的主题提供了一…

    Linux 2023年6月13日
    090
  • shell脚本调试方法

    set -x bash -x test.sh 作者:习惯沉淀 如果文中有误或对本文有不同的见解,欢迎在评论区留言。 如果觉得文章对你有帮助,请点击文章右下角【推荐】一下。您的鼓励是…

    Linux 2023年5月28日
    078
  • 罗德岛

    自从转行以后就建博了,一直没有动手写内容,今天开始写。 主要记录技术上的积累和项目上的工作感悟。 这里就是罗德岛,就在这里跳。 Original: https://www.cnbl…

    Linux 2023年6月6日
    074
  • 项目开发流程与开发模式

    企业项目开发流程 商城 1.1 B2C 直销商城 商家与会员直接交易 ( Business To Customer ) 1.2 B2B 批发商城 商家与商家直接交易 1.3 B2B…

    Linux 2023年6月14日
    0111
  • 网络协议及tcp协议详解

    说说TCP三次握手的过程? 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Ser…

    Linux 2023年6月13日
    083
  • Wireshark 使用教程

    Wireshark是非常流行的网络封包分析软件,可以截取各种网络数据包,并显示数据包详细信息。常用于开发测试过程各种问题定位。本文主要内容包括: 1、Wireshark软件下载和安…

    Linux 2023年6月8日
    076
  • Java实现动态数组【数据结构与算法】

    1、数组 类型固定、长度固定 连续的内存空间 顺序存储、随机读取 查询快、新增删除慢。 最好初始化的时候就指定数组大小。这样就可以避免一定的数组扩容出现的内存消耗。 import …

    Linux 2023年6月14日
    088
  • zabbix监控配置

    zabbix监控配置 zabbix监控配置 zabbix通过web界面配置邮件告警 zabbix配置客户端监控 创建主机组 创建监控主机并将主机加入主机组 添加监控项 配置触发器 …

    Linux 2023年6月13日
    092
  • Docker配置LNMP环境

    目录规划 根目录下新建www目录,集中存放相关的配置文件和web文件 Mysql 从dockerhub拉取mysql镜像 $ docker pull mysql 实例化镜像,启动一…

    Linux 2023年6月13日
    088
  • Spring 对Controller异常的统一处理

    对于Controller的异常处理,分为两种,一种是对已知的异常处理,一种是未知的异常处理 1、定义自定义异常类 /** * @author hzc * */ public cla…

    Linux 2023年6月7日
    099
  • Jedis和redisTemplate 共用问题–序列化不一致(生产事故->解决->两个redisTemplate)

    Jedis和redisTemplate 共用问题老项目用Jedis,放入redis中,用的是比较老的框架,还进行序列化. 用redisTemplate试了下拿不到.因为序列化的方式…

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