WPF 调用 C++

OpenTK 2026-05-07 14:28:02

一、多项目启动设置(让断点能命中 C++)

步骤操作说明
1右键解决方案 → 属性打开解决方案属性页
2选择 通用属性 → 启动项目进入启动项目设置
3选择 多个启动项目允许多个项目同时启动
4CandyCAD → 操作 设为 启动WPF 主程序
5CandyRenderEngine → 操作 设为 启动C++ DLL 项目(关键!)
6点击 确定保存设置

二、DLL 自动复制设置(编译后自动更新 DLL)

在 CandyRenderEngine 项目中:

步骤操作说明
1右键 CandyRenderEngine → 属性打开项目属性
2选择 生成事件 选项卡进入后期事件设置
3在 后期生成事件命令行 中输入命令见下方命令
4点击 确定保存设置

后期生成事件命令(二选一):

使用相对路径:

cmd

xcopy "$(OutDir)$(ProjectName).dll" "$(SolutionDir)CandyCAD\$(OutDir)" /Y
xcopy "$(ProjectDir)libs\glfw\lib-vc2022\glfw3.dll" "$(SolutionDir)CandyCAD\$(OutDir)" /Y

使用绝对路径(更稳定):

cmd

xcopy /Y "E:\Test\CAD\CandyRenderEngine\x64\Debug\CandyRenderEngine.dll" "E:\Test\CAD\CandyCAD\bin\Debug\net8.0-windows\"
xcopy /Y "E:\Test\CAD\CandyRenderEngine\libs\glfw\lib-vc2022\glfw3.dll" "E:\Test\CAD\CandyCAD\bin\Debug\net8.0-windows\"

三、C++ 项目调试配置(断点能命中)

步骤操作说明
1右键 CandyRenderEngine → 属性打开项目属性
2选择 调试 选项卡进入调试设置
3调试器类型:选择 仅限本机允许调试原生 C++ 代码
4点击 确定保存设置

确保 C++ 项目是 Debug 模式

检查项位置要求
配置工具栏下拉框Debug
平台工具栏下拉框x64
优化C/C++ → 优化 → 优化已禁用 (/Od)
调试信息链接器 → 调试 → 生成调试信息生成调试信息 (/DEBUG)

四、WPF 调用 C++ 的方式(不需要额外配置)

项目内容说明
RenderInterop.cs使用 [DllImport("CandyRenderEngine.dll")]P/Invoke 声明
OpenGLControl.cs调用 RenderInterop.Initialize(this.Handle, ...)传入 WinForms 控件的窗口句柄

这是代码层面的固定写法,不需要额外配置。


五、断点调试操作步骤

步骤操作说明
1在 CandyRenderEngine 项目的 .cpp 文件中设置断点点击行号左侧
2确认解决方案平台为 x64工具栏下拉框
3按 F5 启动调试多启动项目模式会自动启动 WPF 和 C++ 调试器
4在 WPF 中执行触发 C++ 调用的操作如打开文件、调整窗口大小等
5断点命中,可以查看变量、单步执行 

六、配置成功检查清单

检查项状态
解决方案设为 多个启动项目
CandyCAD 操作为 启动
CandyRenderEngine 操作为 启动
C++ 项目配置为 Debug x64
C++ 优化设为 已禁用 (/Od)
C++ 调试信息设为 生成调试信息 (/DEBUG)
C++ 调试器类型设为 仅限本机
后期生成事件已配置
断点显示为 实心红圆 🔴
...全文
11 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

3

社区成员

发帖
与我相关
我的任务
社区描述
openTK、OpenGL、WebGL技术学习交流
图形渲染c#程序人生 技术论坛(原bbs) 广东省·深圳市
社区管理员
  • 亿只小灿灿
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧