Skip to content

导入 C++ 工程 ​

[🕒 预计 10 分钟] | 难度:入门

LingBuilder 既能从零编写中文工程,也能把已有的 C++ 工程(Visual Studio 工程或 CMake 工程)导入到当前解决方案中,直接用 IDE 构建、运行、排错,还可以让中文项目直接调用外部 C++ 库。

1. 导入 Visual Studio / CMake 工程 ​

  1. 启动 LingBuilder 并打开一个工作区。
  2. 点击 文件 > 导入 MSBuild/CMake 工程…。
  3. 在弹出的文件选择对话框中选中工程文件,支持三种类型:
    • CMakeLists.txt(CMake 工程)
    • .vcxproj(Visual Studio 工程)
    • .sln(Visual Studio 解决方案,推荐展开导入,见下节)
  4. 点击 导入,工程会作为一个新项目出现在 解决方案资源管理器 中。

NOTE

网页版没有原生文件对话框,此时会改为输入工程文件在工作区内的相对路径。

2. 工程在当前工作区外怎么办 ​

选择的工程文件不在当前工作区内时,LingBuilder 会给出两个选择:

  • 切换工作区并导入(推荐):直接把工程所在目录作为新的工作区打开,并自动完成导入。这是最干净的方式,工作区保持自包含,方便整体复制给别人。
  • 复制进当前工作区:把工程所在目录复制到当前工作区的 external/<目录名> 后导入。复制会自动跳过 Debug、Release、obj、.vs 等构建产物与环境目录(上限 1GB 或 2 万个文件)。

3. .sln 解决方案:展开为多个项目 ​

导入 .sln 时推荐选择 展开为多个项目:

  • 解决方案里的每个 Visual C++ 工程(.vcxproj)都会成为解决方案资源管理器中的一个独立项目,可以单独构建。
  • 解决方案内部的项目依赖顺序会自动保留(例如 App 依赖 Core 时,会先构建 Core 再构建 App)。
  • 只有 x64 平台的工程会自动把构建属性默认为 x64。
  • 工作区之外或非 Visual C++ 的项目会跳过,并在输出面板给出说明。

如果希望把整个 .sln 当作一个整体交给 MSBuild 构建(旧行为),在导入确认框选择 整 sln 单目标导入 即可。

4. 构建与运行导入的工程 ​

  • 右键导入的项目选择 构建属性…,可设置 Debug/Release、Win32/x64 和附加参数,与中文项目一致。
  • 在解决方案资源管理器中把导入的项目设为启动项目后,按 F5 即可 生成并运行:构建成功后会自动定位并启动生成的 exe,运行输出进入底部输出面板。
  • 构建目录与产物位置由 LingBuilder 统一钉定,按 Debug/Release × Win32/x64 分目录存放;若工程产物名称特殊,可在构建属性中填写 可执行文件名 帮助定位。
  • Windows 动态链接库 类型的工程没有可运行产物,只参与构建。

5. 构建报错的中文解释 ​

导入工程的构建输出会自动解析,错误与警告会以结构化条目出现在底部 问题 面板:

  • 每条诊断显示 文件、行号、错误码和消息,单击可跳转到对应源码位置。
  • 常见错误码(如 C2065 未声明的标识符、LNK2019 无法解析的外部符号、MSB8020 平台工具集未安装等)会附带中文解释,帮助快速定位问题方向。

6. 把 C++ 源码目录变成 CMake 工程 ​

打开的文件夹里只有 .cpp/.h 源码、没有任何工程文件时:

  1. LingBuilder 会在进入工作台后提示 检测到 C++ 源码目录(每个工作区只提示一次,可选择不再提示)。
  2. 选择 生成并导入,LingBuilder 会扫描目录中的源码文件,生成一份最小可构建的 CMakeLists.txt(该文件是生成物,顶部有注释标注,可以自由修改),并把它作为 CMake 工程导入。
  3. 也可以随时从菜单选择 文件 > 导入 C++ 源码目录(生成 CMake 工程)… 手动触发;目录中已有 CMakeLists.txt 时会先确认覆盖(只重写该文件)。

7. 把 C++ 源码适配为中文工程 ​

在解决方案资源管理器中右键任意 .cpp 源码文件,选择 适配为中文工程…:

  • LingBuilder 会读取该文件,尝试识别其中的窗口、控件和方法,翻译生成一个 新的中文工程(含中文源码与设计器界面模型)。
  • 无法识别的 C++ 语句会保留为 @ 原生代码块,之后可以在中文工程里继续处理。
  • 原 C++ 文件不会被修改。

8. 中文项目调用外部 C++ 库(混合解决方案) ​

中文项目可以在 项目引用 中引用导入的外部工程(右键项目 > 配置项目引用,填入对方项目 ID):

  • 构建时 LingBuilder 会先构建被引用的外部工程,再构建中文项目。
  • 中文项目生成的 C++ 会自动获得外部工程的头文件目录(源码根目录与 include/ 子目录)和导入库(.lib),可以直接 #include 外部头文件并调用其中的函数。

NOTE

目前 IDE 内构建(F5 / 生成解决方案) 已自动打通引用链路;导出给 Visual Studio 的独立工程暂不会自动写入这些 include/lib 设置,需要在 Visual Studio 里手工配置。

9. 已知边界 ​

  • .sln 展开导入暂不还原解决方案文件夹分组。
  • 外部工程没有窗口设计器与中文源码,中文控件引用(controlRef)等能力不适用于外部工程自身的源码。
  • 复制外部工程进工作区适合中小型工程;仓库级大工程建议使用「切换工作区」通道。