当前位置: 首页 > article >正文

依赖p4est库的程序windows运行方法----支持vs2022调试

一.前置环境1.vs2022且包含CLangCL工具集没有安的在vs的intaller里边修改已安装的vs2022在右侧目录里勾选上使用c进行桌面开发/适用于windows的CClang工具。2.安装MS-MPI,安在默认位置即可https://www.microsoft.com/en-us/download/details.aspx?id57467这一步将msmpisdk.msi和msmpisetup.exe分别安装。3.下载Cmake二.获取p4est源码这一步需要注意了1.这是p4est作者提供的网址https://github.com/cburstedde/p4est/blob/master/INSTALL_WINDOWS进去后下载源代码库的压缩包坑人的一点来了就是下图中蓝色的sc81b9596它不在下载的压缩包中所以还得单独把sc这才是p4est的主要include库下载下来。解压后改名为sc复制到p4est-master里边。三.p4est的windows库文件生成最难的一步这一步的参考文献虽然不能直接用但是有一定参考价值为https://blog.csdn.net/2301_81647724/article/details/1463357961.为了适应windows系统得做一些代码的修改首先在vscode里边打开整个p4est-master文件夹1p4est_algorithms.c的50行p4est_ghost.c的52行p6est.c的53行p6est_ghost.c的26行p8est_algorithms.c的26行p8est_ghost.c的28行添加#define htonl(_val) ( ((uint16_t)(_val) 0xff00) 8 | ((uint16_t)(_val) 0xff) 8 )2p4est作者说的这些File sc/src/sc.h line 96://#include libgen.hFile sc/src/sc.h line 121: #define __attribute__(x)File sc/test/test_node_comm.c line 36: #define srandom srand #define random rand In files src/p4est_algorithms.c, p8est_algorithms.c, p6est.c Include definitions of htonl-function #define htonl(_val) ( ((uint16_t)(_val) 0xff00) 8 | ((uint16_t)(_val) 0xff) 8 )File test/test_balance_seeds2.c line 33: #define srandom srand #define random rand都改了就行3然后进行Cmake 在./p4est-master文件夹下建立一个build的文件夹跟参考不同的就是勾上MPI去掉ZLIBMPI路径需要设置你就设置成MS-MPI的俩路径就行跟我一样应该就不用设置了。configuregenerateopen project依次点击等待就行然后就生成项目进入vs2022了。在这生成解决方案会报一个basename错误不要慌我们得在(sc_containers.c)文件末尾加上#ifdef _WIN32 #include string.h /* Provide a basename implementation for Windows. Returns the last component of a path. The original string is not modified. */ char* basename(char* path) { char *p strrchr(path, /); if (!p) p strrchr(path, \\); return p ? p 1 : path; } /* Provide dirname if needed */ char* dirname(char* path) { char *p strrchr(path, /); if (!p) p strrchr(path, \\); if (!p) return .; *p \0; return path; } #endif在sc/src/sc.h中加上所有的include之后#ifdef _WIN32 char* basename(char* path); char* dirname(char* path); #endif这个时候重新生成解决方案应该就成功了如果有其他错误就上网搜搜或者问问AI应该可以解决大概率就是前面改成windows适用版本的细节我忘记了一部分。四.p4est.lib和sc.lib第三步得到的东西的使用建议先用vs2022命令行测试打开x64 Native Tools Command Prompt for VS 2022然后编译运行一个测试文件这里说一下编译命令哦可能有好多人不会命令行测试为了保护我的隐私路径是需要你自己改成自己的大家应该看得懂cl p4est_step1.c ^ /I***\p4est-master\src ^ /I***\p4est-master\sc\src ^ /I***\p4est-master\build\sc\include ^ /I***\p4est-master\build\include ^ /IC:\Program Files (x86)\Microsoft SDKs\MPI\Include ^ /DSC_HAVE_MPI /DP4EST_HAVE_MPI ^ /MDd ^ /Fe:test_p4est_basic.exe ^ ***\p4est-master\build\Debug\p4est.lib ^ ***\p4est-master\build\sc\Debug\sc.lib ^ C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x64\msmpi.lib我也把我的测试文件贴出来了#include mpi.h #include stdio.h #include stdlib.h /* 包含 p4est 3D 接口通过宏转为 p8est */ #include p4est_to_p8est.h #include p8est_extended.h #include p8est_iterate.h /* 自定义数据结构存储单元中心坐标和体积 */ typedef struct { double center[3]; double volume; } user_data_t; /* 初始化函数在新建单元时调用 */ static void init_quadrant(p4est_t* p4est, p4est_topidx_t which_tree, p4est_quadrant_t* q) { user_data_t* data (user_data_t*)q-p.user_data; double midpoint[3]; /* 获取单元中心坐标3D */ p8est_quadrant_centroid(p4est-connectivity, which_tree, q, midpoint); >***\p4est-master\src ***\p4est-master\sc\src ***\p4est-master\build\sc\include ***\p4est-master\build\include C:\Program Files (x86)\Microsoft SDKs\MPI\Include4链接器 → 常规 → 附加库目录添加***\p4est-master\build\Debug ***\p4est-master\build\sc\Debug C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x645链接器 → 输入 → 附加依赖项添加p4est.lib sc.lib msmpi.lib6C/C → 预处理器 → 预处理器定义添加SC_HAVE_MPI P4EST_HAVE_MPI _CRT_SECURE_NO_WARNINGS _USE_MATH_DEFINES ssize_tint7右键 → 属性 → 配置属性 → 常规 → 平台工具集 → 选择ClangCL8此时运行typedef SSIZE_T ssize_t;会报错解决办法就是在sc.h文件中注释掉我所注释的部分加上我所加的部分即可////#ifdef SC_HAVE_UNISTD_H ////#include unistd.h ////#elif defined _WIN32 ////#include BaseTsd.h ////typedef SSIZE_T ssize_t; ////#endif #ifdef _WIN32 #ifndef ssize_t #ifdef _MSC_VER typedef long long ssize_t; #else typedef long ssize_t; #endif #endif #endif这样就大功告成啦你就可以在vs2022中运行调试你自己编写但依赖p4est库的程序了!!!!

相关文章:

依赖p4est库的程序windows运行方法----支持vs2022调试

一.前置环境 1.vs2022且包含CLangCL工具集,没有安的在vs的intaller里边修改已安装的vs2022,在右侧目录里勾选上(使用c进行桌面开发/适用于windows的CClang工具)。 2.安装MS-MPI,安在默认位置即可(https://www.micros…...

群晖 /dev/md0 根分区爆满 100% 排查清理全流程

解决群辉系统爆满安装不了套件 一、群辉安装套件报错 报错:系统分区的可用空间不足,请联络Synology支持小组来寻求帮助。这是因为系统分区(System Partition)空间不足,导致无法解压和安装该套件。与磁盘硬盘大小没有关…...

2026年,行业内热门GEO搜索优化公司口碑究竟如何?

你是否在为提升品牌在搜索引擎上的排名而烦恼?是否因高昂的优化成本和复杂的操作望而却步?又或者担心优化效果不佳,无法实现询盘转化?今天,我们就来深入探讨一下2026年热门的GEO优化软件,看看哪款能真正解决…...

OpenClaw多模型切换实战:千问3.5-35B-A3B-FP8与文本模型的协作流程

OpenClaw多模型切换实战:千问3.5-35B-A3B-FP8与文本模型的协作流程 1. 为什么需要多模型协作? 去年我在尝试用AI自动化处理工作流时,发现一个尴尬的问题:当我用同一个模型处理图片识别和文本写作时,要么图片理解能力…...

Go Channel 缓冲区机制分析

Go Channel 缓冲区机制分析 在Go语言的并发编程中,Channel是协程间通信的核心机制之一。其缓冲区机制的设计直接影响程序的性能和稳定性。理解缓冲区的运作原理,能够帮助开发者更高效地利用Channel,避免死锁或资源浪费。本文将从缓冲区的本质…...

嵌入式ONPS协议栈:轻量级TCP/IP实现与优化

1. ONPS协议栈概述ONPS是一款专为资源受限的嵌入式系统设计的开源网络协议栈,由国内开发者完全自主开发实现。作为一名长期从事嵌入式网络开发的工程师,我第一次接触ONPS时就对其轻量级设计和完整的功能实现印象深刻。与常见的LwIP等协议栈相比&#xff…...

OpenClaw隐私保护方案:Qwen3-14B本地处理敏感数据

OpenClaw隐私保护方案:Qwen3-14B本地处理敏感数据 1. 为什么需要本地化隐私保护方案 去年我在处理一批医疗研究数据时,曾因使用某云端AI服务导致文件误传至公共存储桶。虽然及时删除了数据,但这次经历让我意识到:当涉及法律文书…...

Ostrakon-VL-8B对比评测:主流开源多模态模型在餐饮场景的较量

Ostrakon-VL-8B对比评测:主流开源多模态模型在餐饮场景的较量 最近在餐饮和零售行业,用AI来“看懂”图片的需求越来越多了。比如,自动识别菜品、分析菜单、甚至根据顾客拍的模糊照片推荐相似菜品。这背后,多模态模型是关键。 市…...

数据处理与统计分析----沙箱

命令行操作沙箱...

终极指南:免费解锁Cursor Pro完整功能,告别AI编程限制

终极指南:免费解锁Cursor Pro完整功能,告别AI编程限制 【免费下载链接】cursor-free-vip [Support 0.45](Multi Language 多语言)自动注册 Cursor Ai ,自动重置机器ID , 免费升级使用Pro 功能: Youve reach…...

C++的std--filesystem文件系统库与跨平台路径处理的标准化

C的std::filesystem文件系统库与跨平台路径处理的标准化 在现代软件开发中,跨平台文件系统操作一直是一个复杂且容易出错的挑战。不同操作系统(如Windows、Linux和macOS)使用不同的路径分隔符和文件系统语义,开发者往往需要编写大…...

AI 模型调度平台的系统架构

AI模型调度平台的系统架构:智能时代的核心引擎 在人工智能技术飞速发展的今天,AI模型调度平台成为企业实现智能化转型的关键基础设施。它通过高效管理、调度和优化AI模型资源,帮助用户快速部署和运行复杂的AI任务。本文将深入解析AI模型调度…...

C++ 模板元编程在性能优化中的作用

C 模板元编程在性能优化中的作用 在现代C开发中,性能优化始终是开发者关注的核心问题之一。而模板元编程(Template Metaprogramming, TMP)作为一种编译期计算技术,能够在程序运行前完成复杂的逻辑处理,从而显著提升运…...

Go Routine 调度与系统线程绑定

Go语言凭借其轻量级并发模型Goroutine,成为高并发场景下的明星语言。Goroutine的魔力源于其高效的调度机制,而它与系统线程的绑定关系更是性能优化的关键。本文将揭开Goroutine调度与线程绑定的技术面纱,从运行时调度器、线程池管理、工作窃取…...

嵌入式LED闪烁控制库Blinker工程实践指南

1. Blinker:嵌入式LED闪烁控制库的工程化实现解析Blinker并非一个广为人知的通用开源库,其项目摘要“Simple library for LED blinking”与关键词“blinking, led”表明这是一个高度聚焦、轻量级的底层驱动组件。在嵌入式系统开发中,“LED闪烁…...

AI 模型推理中的延迟分析与测试

AI 模型推理中的延迟分析与测试 在人工智能技术快速发展的今天,AI 模型的推理性能成为影响实际应用效果的关键因素之一。无论是智能语音助手、自动驾驶,还是实时推荐系统,延迟的高低直接决定了用户体验的好坏。对 AI 模型推理的延迟进行分析…...

M24LR64E-R双接口NFC标签驱动与嵌入式集成指南

1. 项目概述NFC Tag M24LR6E 是一款面向嵌入式系统的 Arduino 兼容库,专为驱动 Seeed Studio 推出的 Grove - NFC Tag 模块而设计。该模块核心芯片为 STMicroelectronics 的 M24LR64E-R,是一款高度集成的双接口(IC RF)近场通信标…...

Ubuntu20.04部署RTKLIB-QT:从源码编译到GUI应用实战

1. 为什么要在Ubuntu上部署RTKLIB-QT? 如果你正在处理GNSS(全球导航卫星系统)数据,比如GPS、GLONASS或北斗的观测数据,RTKLIB绝对是你工具箱里不可或缺的利器。这个开源软件包在Windows下有成熟的GUI版本,但…...

Docker快速部署Nacos

生成数据目录sudo mkdir -p /app/nacos/logs sudo mkdir -p /app/nacos/data sudo chmod -R 777 /app/nacos生成一个随的 Base64 密钥:openssl rand -base64 32nacos启动命令docker run --name nacos-server \-e MODEstandalone \-v /app/nacos/logs:/home/nacos/lo…...

电路板测试点设计与自动化测试实践

1. 测试点的本质作用在电子制造领域,测试点(Test Point)是电路板上那些看似多余的小圆点,但它们却是保证产品质量的关键设计。作为一名有十年经验的硬件工程师,我见过太多因为忽视测试点设计而导致量产失败的案例。测试…...

功率半导体技术:GaN与SiC的性能对比与应用指南

1. 功率半导体技术演进背景在电力电子领域,功率半导体器件的发展经历了从硅(Si)到第三代半导体材料的重大跨越。作为工程师,我们正站在技术革新的关键节点:氮化镓(GaN)和碳化硅(SiC)这两种宽禁带半导体材料正在重塑功率转换的格局。传统硅基功…...

哈佛医学院做了5679次组学分析:大模型能力没差别,关键在验证

哈佛医学院Zitnik团队的MEDEA 给出了一条明确的技术路线:与其追求更强的骨干大模型,不如在分析流程的每一步嵌入验证机制。在理解 MEDEA 的设计逻辑之前,先看一组来自消融实验的数据。在细胞类型特异性靶点发现任务中,研究团队将M…...

轻量级抢占式任务调度器:面向Arduino的毫秒级实时调度

1. 项目概述Task Scheduler是一款专为 Atmel AVR(ATmega328P/ATmega2560)与 ARM Cortex-M3(SAM3X8E)架构微控制器设计的轻量级、抢占式实时任务调度器,面向 Arduino 生态系统深度优化。其核心目标并非替代完整 RTOS&am…...

Claude Code开源第一人,竟是华人辍学博士!CC之父回应:纯手误

51万行Claude Code代码全网裸奔,背后泄密第一人竟是他。就在刚刚,CC之父回应来了:是人,不是Bun。爆出Claude Code源码第一人,竟被全网扒出来了!3月31日凌晨4点23分,安全研究员Chaofan Shou在X上…...

遥感影像解译实战:从目视解译八要素到精准分类

1. 遥感影像解译的底层逻辑 第一次接触遥感影像时,我盯着屏幕上的彩色方块发懵——这堆像素点怎么能看出是森林还是农田?后来才发现,解译就像玩"大家来找茬",关键要掌握八要素这把万能钥匙。大小、形状、阴影、颜色、纹…...

Arduino驱动OV7670图像传感器:底层时序与跨平台实现

1. Arduino_OV767X 库深度解析:OV7670 CMOS 图像传感器在 Arduino 平台上的底层驱动与工程实践OV7670 是 OmniVision(现属韦尔半导体)于 2000 年代初推出的超低功耗、单芯片 QVGA(320240)彩色 CMOS 图像传感器。其采用…...

[特殊字符] iONSPlayer 发布,ONScripter游戏的iOS模拟器

🎮 iONSPlayer 发布,ONScripter游戏的iOS模拟器 阿丰在长春 一只特立独行的丰子 什么是 iONSPlayer?继承自ONSPlayer! iONSPlayer 是一款运行在 iOS 设备上的 ONScripter 引擎模拟器。 简单来说,它可以让你在 iPhon…...

Arduino嵌入式轻量日志库SimpleLogger设计与实践

1. 项目概述SimpleLogger 是一款专为 Arduino 平台设计的轻量级日志库,其核心设计哲学是“极简可用、零侵入、低资源占用”。在资源受限的微控制器(如 ATmega328P、ESP32-S2、nRF52840 等)上,传统日志框架(如 ArduinoL…...

数字IC设计的未来:ChatGPT能否颠覆十大核心领域?

1. ChatGPT在数字IC设计中的定位 最近两年AI工具的发展确实让人眼前一亮,特别是ChatGPT这种大语言模型,在代码生成、技术问答方面展现出了惊人的能力。作为一名在数字IC设计领域摸爬滚打多年的工程师,我也第一时间测试了它在芯片设计各个环节…...

DHL集团与中国外运将进一步深化全球业务协同

、美通社消息:近日,DHL集团与中国外运正式签署谅解备忘录。双方宣布,将在过往坚实合作的基础上,进一步深化全球业务协同,共同开启新一轮战略对话与长远布局。此次签约正值双方合资公司——中外运敦豪成立四十周年。作为…...