参考:
https://www.cnblogs.com/yapingxin/p/15936414.html
实践、概括、优化:
- 编译生成
- 下载源码,解压后进入其中的wincon目录;
- 如果需要为多个Platform(x86和x64)以及多个分支(Debug和Release),多复制备份几个wincon文件夹,分别命名好;
- 编辑其中的Makefile.vc文件,在11行下新建一行,写入:
PLATFORM = ...
其中“...”替换为“X86”则编译32位相应的文件;替换为“X64”则编译64位相应的文件。
- 编译32位文件时,搜索并打开“x86 Native Tools Command Prompt for VS2022”;编译64位文件时,则使用“x64 Native Tools Command Prompt for VS2022”;
- 打开工具,输入以下命令:
nmake -f Makefile.vc WIDE=Y UTF8=Y DLL=Y DEBUG=Y
- 添加“WIDE=Y”则产生支持宽字符的文件,否则不支持;
- 添加“UTF8=Y”则产生支持UTF-8的文件,否则不支持;
- 添加“DLL=Y”则产生相应的DLL文件,否则不产生;
- 添加"DEBUG=Y"则产生用于Debug的文件,否则产生用于Release分支的文件。
- 设置项目
- 按照结构储存获得的文件和源码根目录下的.H文件:
./ | |-includes/ | curses/ | curses.h | curspriv.h | panel.h |-dll/ | Win32/ | Debug/ | pdcurses.dll | Release/ | pdcurses.dll | x64/ | Debug/ | pdcurses.dll | Release/ | pdcurses.dll |-lib/ | Win32/ | Debug/ | pdcurses.lib | Release/ | pdcurses.lib | x64/ | Debug/ | pdcurses.lib | Release/ | pdcurses.lib
展开树状结构图建议将所有配置的库都统一存在一个固定的文件夹。之后安装的库也以同样的方式分门别类储存在相应文件夹下。
- 在Visual Studio 2022中创建一个新的C/C++控制台项目,打开项目属性,设置将“配置”设置为“所有配置”,“平台”设置为“所有平台”;
- VC++中,在“外部包含目录”中添加刚刚第1步中创建的include文件夹的路径;
[ROOT]\include
将“[ROOT]”替换为刚刚创建的文件夹根目录。 - 链接器-常规中,在“附加库目录”中添加刚刚第1步中创建的lib文件夹的路径;
[ROOT]\lib\$(PLatform)\$(Configuration)
将“[ROOT]”替换为刚刚创建的文件夹根目录,其中$(Platform)和$(Configuration)是宏,在编译时能自动切换X86/X64以及Debug/Release;
- 链接器-输入中,在“附加依赖项”中添加“pdcurses.lib”;
- 生成事件-生成后事件中,在命令中添加:
copy "$(CPPCOMP)\dll\$(Platform)\$(Configuration)\pdcurses.dll" "$(TargetDir)"
- 在写.CPP代码时,先宏定义PDC_DLL_BUILD,然后再包含curses/curses.h。
- 按照结构储存获得的文件和源码根目录下的.H文件:
- 测试
- 新建源代码文件,写入以下内容:
#define PDC_DLL_BUILD #include <pdcurses/curses.h> #include <string> int main() { initscr(); cbreak(); noecho(); curs_set(0); const char* message = "Press any key to get flash-banged!"; const char* title = "Test PDCurses!"; PDC_set_title(title); do { mvprintw(LINES / 2, (COLS - (int)strlen(message)) / 2, message); refresh(); getchar(); flash(); } while (1); endwin(); return 0; }
编译通过后产生窗口,按任意键可使全屏闪动,则配置成功。
- 新建源代码文件,写入以下内容:
标签:文件,01,lib,22,Windows,dll,Release,Debug,pdcurses From: https://www.cnblogs.com/NicholasFlare/p/17815462.html