Visual C++ 编译出只有 1536 字节的窗口程序

llama.cpp本地推理实战:GGUF量化与CUDA配置指南 LLM本地推理是指在终端设备上直接运行大语言模型,无需依赖云端API。其核心原理在于模型量化压缩与硬件加速协同优化,关键技术价值体现在低延迟、高确定性与跨平台一致性。典型应用场景包括边缘AI质检、离线知识库、嵌入式智能终端等。GGUF格式作为专为llama.cpp设计的模型容器,不仅封装权重,更内嵌硬件适配策略与内存调度指令;而Windows11下CUDA支持则需精准匹配MSVC与CUDA Toolkit版本,并通过CMake显式指定计算架构。本文深入解析Q4_K_M等量化等级的工程含义及实测性能边界。 阅读详情

//预处理
#include <Windows.h>

//使用了下面的预处理,编译连接时必须是 Release 方式,否则不能通过


//自定义程序入口,如果要优化,推荐使用这个
//如果使用 VS.NET,也可以这样设置:在“解决方案管理器”里选定项目,右击,选择“属性”->“链接器”->“高级”->“入口点”
//VC 6里面也有类似的设置,但具体不记得了
//项目属性的其它设置可以仔细看看,其它优化也都在这里可以设置

#pragma comment(linker, "/ENTRY:EntryPoint")


//下面是调整段对齐,默认是 4K,在 Win98 下能更快地装入 PE 文件,但会增加 PE 文件的大小
//下面这一行在这里好像会说是“无效的指令”什么的,故在这里也注释掉了,也许是段太小的原因吧。
//直接在工程选项里面设置:项目“属性”->“链接器”->“优化”->“Windows98 优化”->“否 (/OPT:NOWIN98)”
//#pragma comment(linker, "/OPT:NOWIN98")


//下面的优化是段合并,不推荐使用,在很多程序里也许也许不能使用

#pragma comment(linker, "/SECTION:MiniPE,")             //创建自定义的 MiniPE Section
#pragma comment(linker, "/MERGE:.data=MiniPE")  //合并.data Section 到 MiniPE Section
#pragma comment(linker, "/MERGE:.text=MiniPE")  //合并.text Section 到 MiniPE Section
#pragma comment(linker, "/MERGE:.rdata=MiniPE") //合并.rdata Section 到 MiniPE Section
////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////
//全局变量

HWND                                    g_hWnd;         //主窗口句柄,一般程序中经常用到此变量,故使用全局变量
HINSTANCE                               g_hInst;        //应用程序进程句柄,一般程序中经常用到此变量,故使用全局变量

const char                              c_szAppName[] = "MiniPE";
////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////
//函数声明

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow);
////////////////////////////////////////////////////////////////////////////////////////////////////




////////////////////////////////////////////////////////////////////////////////////////////////////
//入口函数
//使用我们自己的入口函数,而不用连接器默认提供的一大堆程序初始化操作的代码
//为了在一个普通的 Win32SDK 程序里能使用这种方法,下面的函数将调用 WinMain() 函数,并给出相应的参数

void EntryPoint()
{
       ExitProcess(WinMain(GetModuleHandle(NULL), NULL, GetCommandLine(), SW_SHOWNORMAL));
}
////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////
//主函数

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int iCmdShow)
{
       MSG                                             sMsg;
       WNDCLASSEX                              sWndClassEx;


       g_hInst = hInstance;

       sWndClassEx.cbSize = sizeof(WNDCLASSEX);
       sWndClassEx.style = CS_VREDRAW | CS_HREDRAW;
       sWndClassEx.lpfnWndProc = (WNDPROC) WindowProc;
       sWndClassEx.cbClsExtra = 0;
       sWndClassEx.cbWndExtra = 0;
       sWndClassEx.hInstance = g_hInst;
       sWndClassEx.hIcon = LoadIcon(NULL, IDI_APPLICATION);
       sWndClassEx.hCursor = LoadCursor(NULL, IDC_ARROW);
       sWndClassEx.hbrBackground = (HBRUSH) (COLOR_WINDOW);
       sWndClassEx.lpszMenuName = NULL;
       sWndClassEx.lpszClassName = c_szAppName;
       sWndClassEx.hIconSm = NULL;
       RegisterClassEx(&sWndClassEx);

       g_hWnd = CreateWindowEx(0, c_szAppName, c_szAppName, WS_OVERLAPPEDWINDOW,
               CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
               NULL, NULL, g_hInst, NULL);
       ShowWindow(g_hWnd, iCmdShow);
       UpdateWindow(g_hWnd);

       while (GetMessage(&sMsg, NULL, 0, 0))
       {
               TranslateMessage(&sMsg);
               DispatchMessage(&sMsg);
       }
       return((int) sMsg.wParam);
}
////////////////////////////////////////////////////////////////////////////////////////////////////



////////////////////////////////////////////////////////////////////////////////////////////////////
//主窗口回调函数

LRESULT CALLBACK WindowProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
       switch (uMsg)
       {
       case WM_DESTROY:
               PostQuitMessage(0);
               break;  

      default:
               return(DefWindowProc(hWnd, uMsg, wParam, lParam));
       }
       return(0);
}

PostgreSQL原生向量搜索:pgvector零迁移实战指南 向量搜索是AI应用的核心能力之一,其本质是在高维空间中进行近似最近邻(ANN)检索。传统方案依赖独立向量数据库,但引入数据双写、权限割裂与运维复杂度等工程风险。pgvector作为PostgreSQL官方扩展,通过原生数据类型、SIMD优化的距离运算符和标准索引访问方法(IVFFLAT/HNSW),将向量能力无缝嵌入现有关系型基础设施。它不改变事务模型、不新增服务组件、不破坏备份与监控体系,真正实现SQL级语义检索与业务逻辑的深度耦合。适用于已有成熟PostgreSQL生态、强调数据一致性与合规审计的中大型 阅读详情

相关推荐

【信息科学与工程学】【数据中心】第三十五篇 云计算数据中心的学科知识04

编号学科(课程)核心知识点在云计算/云存储/云网络/云安全/云MaaS中的作用代表教材/资料/论文 + 数学方程式列表工业界应用D1421​云原生数据库:TiDB​HTAP(混合事务/分析处理)、分布式SQL、水平扩展、强一致(Raft)、自动故障恢复、与MySQL兼容、TiFlash列式引擎提供弹性扩展的分布式数据库;支撑高并发在线交易与实时分析教材:《TiDB in Action》PingCAP(2020) 论文:《TiDB: A Raft-based HTAP Database》(2017)

weixin_49199313的博客 404

以太网帧长度1518、1522、1536的说明

一、IEEE802.3 以太网帧结构: Preamble(7-bytes)--前导码 StartFrameDelimiter(1-byte)--定界符 Dest.MACAddress(6-bytes)--目的地址 SourceMACAddress(6-bytes)--源地址 Length/Type(2-bytes)--长度或帧类型 Data

WCG的博客 2万+

基于PaddleOCR的离线多语言OCR SDK:从模型优化到跨平台部署实战

OCR(光学字符识别)技术是实现图像文字自动提取的关键,其核心原理是通过深度学习模型对图像中的文本区域进行检测与识别。这项技术的价值在于将非结构化的图像信息转化为可编辑、可搜索的文本数据,极大地提升了信息处理效率。在数据安全要求高、网络环境不稳定或需要深度集成的应用场景中,离线OCR SDK成为刚需。本文聚焦于如何将PaddleOCR这一优秀的开源多语言OCR引擎,通过模型量化、架构封装与跨平台构建,打造为一个轻量级、易集成的离线SDK,解决了部署复杂和依赖繁重等工程难题,为桌面应用、移动端App及边缘设备

weixin_34050005的博客 470

怎样使用 Visual C++ 编译出只有 1536 字节的窗口程序

//题目:怎样使用 Visual C++ 编译出只有 1536 字节的窗口程序 //这些技巧都是dREAMtHEATER老大哥告我的…… //编译出来后,文件大小为: 1536 字节 //////////////////////////////////////////////////////////////////////////////////////////////////// //预处理 #

doskey的专栏 1482

solidworks实体显示线框

solidworks实体莫名其妙显示为有点虚的线框

qq_35858902的博客 1万+

# 解决 win11 连接共享打印机,报错 0x00000709 问题

# 解决 win11 连接共享打印机,报错 0x00000709 问题

段子手168的博客 9万+

RTMP握手协议及lal RTMP握手实现解析

RTMP握手协议及lal RTMP握手实现解析

努力努力再努力L 943

Ceph入门到精通-存储桶通知

这 通知还可以根据前缀的匹配项过滤掉事件,并且 (1) 键的后缀,(2) 附加到对象的元数据属性, 或 (3) 对象标签。在此模式下,操作仅在以下之后确认(确认) 通知将发送到主题的已配置终端节点。这意味着 通知的往返时间(发送 通知主题的终端节点以及接收 确认)被添加到操作本身的延迟中。要更新主题,请使用用于创建主题的相同命令(但在 更新时,使用现有主题的名称和不同的终端节点值)。端口:对于未加密的连接,默认为 5672,对于未加密的连接,默认为 5671 SSL 加密连接。(默认情况下,这是“假的”。

隔壁老瓦的专栏 1131

以太网帧格式的区分

以太网帧格式,分为以下两种:Ethernet II           IEEE802.3length/type &gt;=1536     Ethernet IIlength/type &lt;=1500     IEEE 802.3

None31994的博客 4337

python中有趣的库 freegames 的详细使用

freegames 是一个包含多个简单 Python 游戏的开源库,适合初学者学习 Python 编程和游戏开发。以下是 freegames 的详细介绍和用法示例。

数据知道的博客 3万+

Unity 佳能SDK 及数据获取

3. 把CameraControl 下面只要是绿色的 .cs 文件都复制到Unity 中。1. 填写信息跟官方申请SDK,大概1-2个工作日会邮件回复你。2. 将SDK这两个文件放到 Unity Plugins文件夹。

我知道你很急,但是路要一步步走 1477

windows程序设计 消息循环

The Message Loop A programretrieves these messages from the message queue by executing a block of codeknown as the "message loop": while (GetMessage (&msg, NULL, 0,0)) { TranslateMessage (&msg) ;

梦幻DUO的游戏开发之路 597

【Claude】组织级认证限制报错已解决(4 种)

报错被禁用的是什么谁能解除应急方案整个 Console 组织Anthropic 支持换账户 / 订阅凭证API key 认证方式你的组织管理员用订阅/login订阅 OAuth 登录你的组织管理员用 API keyRoutines 功能你的组织所有者手动计划任务替代共同排查模式/status确认当前凭证;检查环境变量;看清报错消息里命名的是什么(key?组织访问?),对症清除;管理员层面的限制,找管理员解锁。

博客 1万+

VC++编译1.5K的窗口程序

//题目:怎样使用   Visual   C++   编译出只有   1536   字节的窗口程序//这些技巧都是dREAMtHEATER老大哥告我的……//编译出来后,文件大小为:   1536   字节    /////////////////////////////////////////////////////////////////////////////////////////////

benny5609的专栏 700

13、数据可视化与分组操作:Danfo.js 实战指南

本文深入介绍了如何使用 Danfo.js 进行数据可视化与分组操作。内容涵盖多种图表的创建与配置,如折线图、散点图、箱线图、小提琴图、直方图和柱状图,并结合 Plotly.js 实现丰富的交互式可视化效果。同时,详细讲解了数据聚合的‘分割-应用-组合’模式,包括分组数据、遍历分组、apply 方法及 agg 聚合操作,帮助开发者高效处理和分析结构化数据。适用于 Dnotebook、HTML 及主流前端框架的应用场景。

o1p2q3r的博客 98

AgentScope Java 入门:Spring AI Alibaba 与 AgentScope 的定位与区别

摘要:Spring AI Alibaba是阿里基于Spring AI开发的本地化AI应用框架,旨在服务Java开发者。它提供模型接入、函数调用、RAG等功能,并与阿里云基础设施深度集成。同时,阿里开源了多智能体框架AgentScope,其Java版(AgentScope-Java)专注于Agentic设计理念。两者将协同发展:Spring AI Alibaba侧重Spring生态集成,AgentScope-Java强化智能体能力。未来计划包括支持AgentScope、升级Admin平台,以及推进Server

SmartSi 1534

减小文件体积

第一个办法是看雪抄来的,我测试是通过 ----------------------------------------------------------- 标 题:怎样使用 Visual C++ 编译出只有 1536 字节的窗口程序 发信人:Yonsm  时 间:02/09/20 08:20pm 详细信息: //题目:怎样使用 Visual C++ 编译出只有 1536 

海阔天空 851

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

大模型量化从0到1(九):用 llama.cpp 把模型转成 GGUF 并跑本地推理

这篇文章详细介绍了如何将HuggingFace模型转换为GGUF格式并进行量化推理的完整流程。主要内容包括: 整体流程:从HuggingFace模型到GGUF格式转换(FP16),再进行量化压缩,最后本地推理运行 关键步骤: 编译安装llama.cpp工具链 使用convert_hf_to_gguf.py脚本将模型转换为FP16的GGUF格式 用llama-quantize工具进行不同档位的量化(推荐Q4_K_M) 通过llama-cli进行本地CPU/GPU推理 实用技巧: 支持一次转换多个量化档位 提供

weixin_49520696的博客 453

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

PostgreSQL向量搜索革命:pgvector扩展深度解析与实践指南

在人工智能和机器学习快速发展的今天,向量数据已成为现代应用的核心组成部分。pgvector作为PostgreSQL的开源向量相似度搜索扩展,为开发者提供了在关系型数据库中存储和查询高维向量的完整解决方案。本文将深入探讨pgvector的技术原理、实战应用和性能优化策略,帮助您构建高效的向量数据库应用。 ## 向量搜索的核心概念与原理 向量搜索的本质是在高维空间中寻找最相似的向量。传统的关系型数

gitblog_00113的博客 687

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

GPU与CPU分工原理:从CUDA报错看并行计算本质

并行计算是现代AI与高性能计算的基石,其核心在于任务如何在CPU与GPU间合理拆分。CPU擅长低延迟、强分支、异构任务调度,GPU则专精于高吞吐、规则化、数据并行的数学运算。这种差异源于二者底层架构:CPU依赖复杂流水线与缓存一致性,GPU采用SIMT模型与Warp级同步。CUDA并非简单加速库,而是涵盖驱动、运行时与编译器的完整协同系统,负责内存管理、Kernel调度与版本对齐。典型问题如'no kernel image available'实为CUDA Toolkit、PyTorch二进制包与GPU计算

weixin_30410119的博客 620

OpenClaw+Qwen3.5:本地化长上下文推理新范式

大语言模型的上下文长度限制是制约其办公落地的核心瓶颈,传统方案依赖扩大token窗口或牺牲响应速度,本质仍是静态内存管理。OpenClaw提出动态语义空间建模,将上下文从固定窗口升级为可回溯、可分片、按需加载的‘语义工作台’,依托轻量路由模型与FlashAttention-2优化,在不修改Qwen3.5权重的前提下实现跨文档、跨会话的高相关性召回。该技术显著降低硬件门槛(RTX3060即可运行),提升长文档处理稳定性与工程可用性,适用于合同审阅、技术比对、会议纪要等真实办公场景,是面向本地化部署的上下文感知

weixin_33812433的博客 472

7-Zip ZS深度解析:六种现代压缩算法的完整实战指南

在数据爆炸式增长的数字时代,压缩工具的性能直接关系到存储效率与传输速度。7-Zip ZS(7-Zip-zstd)作为经典7-Zip的增强版本,集成了Zstandard、Brotli、LZ4、Lizard、LZ5和Fast-LZMA2六种现代压缩算法,为技术爱好者和专业用户提供了前所未有的压缩效率与灵活性。本文将深入解析7-Zip ZS的核心架构,提供完整的实战应用方案,帮助您充分利用这一强大的压缩

gitblog_00618的博客 683

7-Zip ZS终极指南:解锁新一代压缩算法的完整技术解析与实战应用

在数据爆炸式增长的时代,传统压缩工具在面对海量数据处理时往往力不从心。你是否曾因压缩速度太慢而等待数小时?是否因压缩率不足而频繁更换存储设备?是否因算法选择单一而无法针对特定场景优化?7-Zip ZS(7-Zip-zstd)正是为解决这些痛点而生的新一代压缩工具,它集成了Zstandard、Brotli、LZ4、Lizard、LZ5和Fast-LZMA2六种现代压缩算法,为技术爱好者和进阶用户提供

gitblog_00628的博客 1102

深入理解NVIDIA GPU SM架构与CUDA编程核心优化

GPU并行计算是现代高性能计算的核心技术,其性能发挥依赖于对底层硬件架构的深刻理解。NVIDIA GPU的流式多处理器(SM)是执行计算任务的基本单元,它通过CUDA核心、线程束调度器、共享内存等组件协同工作。理解SM的运作原理,对于实现高效并行计算至关重要,能够帮助开发者将硬件潜力最大化。CUDA编程模型将计算任务组织成网格、线程块和线程的层次结构,并映射到SM硬件上执行。掌握内存层次结构,特别是全局内存的合并访问与共享内存的高效使用,是优化CUDA程序性能的关键。这些技术广泛应用于深度学习训练、科学计算

weixin_33747129的博客 413

异步 IO

异步 IO 节省了大量的时间,gi

lizhihaoweiwei的专栏 748

以太网最大和最小帧长度

最小长度: 64byte, 设定最小长度的目前是为了区分出超小的错帧。 最大长度:1536byte, 这是因为以太的leng/type规定大于0x600就是type帧,小于这个就是长度帧,也就是单从长度帧来说,0x600也就是1536就是最大帧。最大长度一般不适于大长,如果太长,长期占用以太通路,影响其余发送端的发送。 MTU: 以太接口常见的配置,常规值是1500, 主要是指以太网的IP段的数据,加上以太头14byte(DA+SA+type), 加vlan(4byte)或双vlan(8byte),都还

dbitc的博客 1万+
上一篇: “MJ”病毒技术细节
下一篇: 病毒也整主动防御
iiprogram
博客等级 码龄25年 1068粉丝 1515原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值