如何在Visual Studio中从LLVM切换至MSVC(保留LLVM)并解决链接错误
解决Visual Studio切换回MSVC编译器及PDCurses链接错误问题
一、从Clang/LLVM切换回MSVC编译器(保留LLVM)
全局项目切换
- 右键你的项目 → 选择「属性」
- 进入「配置属性」→「常规」
- 在「平台工具集」下拉菜单中,选择对应版本的Visual C++工具集(比如
v143 - Visual Studio 2022 (v143)),点击确定即可。LLVM会保留在系统中,不会被删除。
单个文件单独切换(仅针对特定文件使用MSVC)
- 右键目标源文件 → 选择「属性」
- 进入「配置属性」→「常规」
- 在「平台工具集」中选择对应的MSVC版本,确定后该文件会单独用MSVC编译,其他文件可继续使用Clang。
二、解决PDCurses的LNK2019链接错误
你遇到的LNK2019错误是因为编译器未链接PDCurses的库文件,按以下步骤处理:
- 确认NuGet包安装状态:打开项目的「NuGet包管理器」,检查PDCurses包是否已正确安装,若未安装则重新安装对应版本。
- 添加附加依赖项:
- 右键项目 → 属性 → 「配置属性」→「链接器」→「输入」
- 在「附加依赖项」中添加PDCurses的库文件名,比如
pdcurses.lib(若使用宽字符版本则为pdcursesw.lib,具体以NuGet包内的lib文件为准)。
- 验证附加库目录:
- 进入「链接器」→「常规」→「附加库目录」,确认已包含PDCurses的lib文件路径(NuGet包通常会自动配置,若未生效可手动添加,例如
$(SolutionDir)packages\PDCurses.[版本号]\lib\[平台])。
- 进入「链接器」→「常规」→「附加库目录」,确认已包含PDCurses的lib文件路径(NuGet包通常会自动配置,若未生效可手动添加,例如
- 完善代码(可选但推荐):Curses程序需要初始化和结束窗口,否则运行会异常,修改代码如下:
#include <curses.h> int main(void) { initscr(); // 初始化Curses窗口 addstr("Hello World!"); refresh(); // 刷新屏幕显示内容 getch(); // 等待用户输入,防止程序直接退出 endwin(); // 关闭Curses窗口 return 0; }
内容的提问来源于stack exchange,提问作者Spencer Rosas-Gunn
相关产品推荐
相关产品推荐

