解决masm与GetEnvironmentString不兼容问题

使用GetEnvironmentStrings()函数获取系统环境变量--(核心编程笔记2) 使用GetEnvironmentStrings函数很简单,函数没有参数,返回值是一个字符串指针(PTSTR),指向环境变量的内存块。注意个这个内存块是只读的,如果需要改变环境变量需要使用SetEnvironment函数。而且是在使用完GetEnvironmentStrings之后,需要使用FreeEnvironmentStrings来释放。      这里需要注意的问题有,首先是一个经常犯到的错 阅读详情

 

Masm32中 kernel32.inc 中对GetEnvironmentStrings存在问题

所以当在私用masm编译的时候会出现如下错误提示

LIBCD.lib(a_env.obj) : error LNK2001: unresolved external symbol __imp__GetEnvironmentStrings@0

test.exe : fatal error LNK1120: 1 unresolved externals

 

windows api中大部分api都有两个版本 A 版本和W版本

例如

#ifdef UNICODE

#define MessageBox  MessageBoxW   

#else

#define MessageBox  MessageBoxA

#endif // !UNICODE

GetEnvironmentStrings也存在两个版本

#ifdef UNICODE

#define GetEnvironmentStrings  GetEnvironmentStringsW

#else

#define GetEnvironmentStrings GetEnvironmentStrings

#endif // !UNICODE

但是不知由于什么原因 可能weiruan疏忽所以 GetEnvironmentStrings的ANSI版本是

GetEnvironmentStrings而不是GetEnvironmentStringsA

但是masm却将其当做GetEnvironmentStringsA来处理的

见masm中对其宏定义

GetEnvironmentStringsA PROTO

GetEnvironmentStrings equ <GetEnvironmentStringsA>

所以再使用GetEnvironmentStrings宏的时候找不到GetEnvironmentStrings去替换而是找了GetEnvironmentStringsA 然而GetEnvironmentStringsA是不存在的 所以出现了上述问题

 

解决方案

将masm32中的kernel32.inc中的

GetEnvironmentStringsA PROTO

GetEnvironmentStrings equ <GetEnvironmentStringsA>

替换成

GetEnvironmentStrings PROTO

然后使用inc2l.exe工具

E:/Program Files/RadASM/masm32/include>inc2l kernel32.inc命令

将生成的kernel32.lib替换masm32中kernel32.lib

OK 问题解决

 

RK3588多核NPU并行加速yolo优化教程:基于线程池的高性能推理实现 本教程详细介绍了RK3588多核NPU的并行加速优化方法。RK3588搭载三个独立NPU核心,总计算能力达6TOPS,但传统单线程方式无法充分发挥其性能。文章从硬件架构分析入手,详细讲解了三核心独立处理架构和多种工作模式,并通过代码示例展示了线程池技术的实现原理。线程池通过预创建工作线程、任务队列和条件变量等核心组件,避免了频繁创建线程的开销,能显著提升NPU的并行处理效率。教程还提供了性能计算公式和内存带宽优化策略,帮助开发者最大化利用RK3588的硬件算力,实现高性能AI推理。 阅读详情

相关推荐

山景BP10_128DBG开发板ADC_Key驱动

最近在学习山景BP10_128DBG开发板,想使用开发板上的按键。看了看原理图和之前用过的按键好像有点不一样。常见的按键都是判断IO口是否被拉低或拉高来判断按键是否被按下。山景BP10_128DBG开发板上的按键是ADC按键,每个按键按下之后ADC的采样值是不同的,通过ADC采样回来的值进而判断哪个按键按下。这种方式核心思想就是用一个ADC通道来节约IO口,对于IO紧张的芯片是一个不错的解决思路。

weixin_56646002的博客 1308

《Windows API巡礼》---GetEnvironmentStrings和GetEnvironmentVariable

<br />环境变量是进程中一组变量信息,环境变量分为系统环境变量、用户环境变量和进程环境变量。系统有全局的环境变量,在进程创建时,进程继承了系统的全局环境变量、当前登录用户的用户环境变量和父进程的环境变量。进程也可以有自己的环境变量。<br />设置和获取所在进程的环境变量使用API函数GetEnvironmentStrings、GetEnvironmentVariable和SetEnvironmentVariable:<br />1)GetEnvironmentStrings函数用于获取所有环境变量字符

ASCE1885 8046

【ADCU详解】PMIC电源管理集成电路详解

自动驾驶域控制器(ADCU)中的电源管理集成电路(PMIC)是高度集成的关键部件,负责为计算核心、传感器等提供高效稳定的多路电源。其核心特点包括:符合车规AEC-Q100标准、支持功能安全ASIL等级、精确的时序控制及强抗干扰能力。PMIC由开关稳压器、LDO、时序控制器、监控保护电路等模块组成,通过分层电源树框架实现电能分配。设计需考虑效率、功率密度、噪声性能等关键维度,底层基于Buck转换器和LDO原理工作。使用中需满足严苛的车规环境要求,并通过静态/动态测试及故障注入测试进行验证,确保系统可靠性和安全

qq_40844444的博客 841

59.环境变量GetEnvironmentStrings、FreeEnvrionmnetStrings、GetEnvironmentVariable、SetEnvironmentVariable

GetEnvironmentStrings获取所有环境变量 返回值为系统环境变量的指针 WINBASEAPI LPSTR WINAPI GetEnvironmentStrings(VOID); GetEnvironmentVariable获取指定名称的变量名的值 WINBASEAPI DWORD WINAPI GetEnvironmentVariableA( LPCSTR _in lpName,...

单于的学习历程 1278

MOSFET导通电阻Rdson全解析:物理组成、公式推导与工程选型要点

在功率电子设计中,MOSFET作为核心开关器件,其导通电阻Rdson直接决定导通损耗与系统效率。从半导体物理角度看,Rdson并非单一固定值,而是由源极电阻、沟道电阻、累积层电阻、JFET区电阻、漂移区电阻及衬底电阻等多个分量串联而成,并随栅极驱动电压、结温以及击穿电压等级发生显著变化。理解Rdson的物理来源与数学表达,有助于工程师在低压大电流与高压小电流等不同场景中合理选型、优化驱动电压并准确估算热损耗。文章从沟道电阻公式出发,深入剖析耐压与导通电阻的物理矛盾、温度系数的影响规律,并给出数据手册参数的正

weixin_29163857的博客 190

VCAST创建单元测试工程

选择工作目录,后面创建胡UT工程将会生成到这个目录。

qq_42851449的博客 2479

windows vis c++/GetEnvironmentStrings 如何获取打开进程的环境变量字符串

#include "stdafx.h" #include #include #include #include using namespace std; void DumpEnvStrings(); int _tmain(int argc, _TCHAR* argv[]) // { STARTUPINFO si={sizeof(si)}; PROCESS_INFORM

小知识折射大智慧 2546

JAVA:Spring Boot 集成 Forest 优雅的 HTTP 客户端

Forest是一个优雅的Java HTTP客户端框架,通过注解式声明简化HTTP接口调用。它支持多HTTP客户端、自动参数绑定、序列化、重试机制和拦截器等功能。本文演示了如何在Spring Boot中集成Forest,包括配置、接口定义和调用示例,还展示了POST请求、文件上传等常见场景。相比传统HTTP客户端,Forest具有声明简洁、功能完善的特点,特别适合微服务调用和第三方API对接,能显著提升开发效率和代码可维护性。

木头 426

通过崩溃地址找出源代码的出错行

首先必须生成程序的 MAP 文件。什么是 MAP 文件?简单地讲, MAP 文件是程序的全局符号、源文件和代码行号信息的唯一的文本表示方法,它可以在任何地方、任何时候使用,不需要有额外的程序进行支持。而且,这是唯一能找出程序崩溃的地方的救星。 好吧,既然 MAP 文件如此神奇,那么我们应该如何生成它呢?在 VC 中,我们可以按下 Alt+F7 ,打开“Project Settings”选项页

oceanark的博客 410

uni-app - 最详细 H5 网页接入微信登录功能,提供公众号配置与详细注释示例代码(移动端网页实现点击登录按钮后 调用微信公众号授权登录功能 详细讲解接入流程与详细示例代码)官方最新超级详细教程

uniapp中H5微信登录,uniapp H5微信授权登录,微信公众号第三方网页(H5)授权登录(OAuth2.0)流程及逻辑详细教程,UNIAPP 开发H5 怎么实现微信公众号登录功能,uniapp如何实现H5网页的公众号微信登录,怎么做uniapp微信登录,uniapp h5项目怎么实现微信登录的功能,uniapp微信浏览器H5授权微信登录,UniApp开发H5接入微信登录的全过程,uniapp的H5页面使用微信登录,uniapp H5微信授权登录,H5之微信授权登陆 (uniapp网页版微信授权登录)

🏆 前端领域优质创作者 7404

推理引擎终极对决:TensorRT vs ONNX Runtime,YOLOv8速度差30%的核心原因与实操指南

若你使用NVIDIA GPU,且追求极致速度和低延迟,TensorRT是唯一选择,尤其是边缘设备和实时场景;若你需要跨硬件部署、快速验证原型,或预算有限(无需NVIDIA GPU),ONNX Runtime是性价比之王;对于YOLOv8这类检测模型,TensorRT的FP16/INT8量化是“免费的速度提升”,建议优先采用。最后提醒:推理引擎的优化是“细节决定成败”——同样的引擎,不同的预处理方式、显存配置、批大小,都会导致10%-20%的性能差异。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1026

unresolved external symbol __imp__timeGetTime@0

使用VC6++编译程序无错误,但是在build程序时出现一个错误,错误代码:error LNK2001: unresolved external symbol __imp__timeGetTime@0                                导致这种错误是因为使用timeGetTime函数,没加入winmm.lib这个库文件。 解决以上错误有2种方法 方法一

budingningmeng的专栏 3967

基于计算机视觉的无人便利店技术:从算法到部署的系统化实战指南

摘要:本文系统介绍了基于计算机视觉的无人便利店技术方案,提出"商品检测-跟踪-动作识别-防损-结算"五段式流水线架构。详细阐述了YOLOv8-Seg商品检测、OC-Sort多目标跟踪、3D-CNN+ST-GCN动作识别等核心算法实现,并完成NVIDIA Jetson Xavier NX边缘端的优化部署。通过TensorRT量化、DeepStream加速等技术手段,系统在保持94.7%动作识别准确率的同时,将漏单率降至0.8%,单店云端算力成本较行业平均降低84%。所有代码已开源,可直接应

博客 624

error LNK2001: unresolved external symbol __imp__WSAStartup@8

VC6.0下的错误信息:error LNK2001: unresolved external symbol __imp__socket@12<br />error LNK2001: unresolved external symbol __imp__WSAStartup@8错误原因:因为没有联接socket库ws2_32.lib。 解决办法:对于VC6.0要在porject/settings的link页面中object/library modules中添ws2_32.lib就可以了;对于Dev-C++同样

zltianhen的专栏 4083

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

关于glew库的使用问题(unresolved external symbol __imp__glewInit@0)

0> glew库是干什么的? 长话短说,就是因为windows对opengl的支持不好,为了不使用软模拟的opengl,需要从显卡厂家的驱动里抽取opengl的实现,而glew方便了这个过程。只需要调用一下glewInit就可以使用gl*函数了。 glew还提供了两个实用小工具,检测系统对opengl的支持程度,分别是glewinfo.exe和visualinfo.exe,运行后会生成两个文本

Station of GoGdizzY 1万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

error LNK2001:unresolved external symbol __imp__@ 解决方法

我在程序Lan中使用了winsock函数,出现如下错误:Lan.obj:error LNK2001: unresolved external symbol __imp__listen@8Lan.obj : error LNK2001: unresolved external symbol __imp__bind@12Lan.obj : error LNK2001: ...

iteye_8029的博客 657

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

解决masm在64位windows版本不兼容无法运行

最近在学校机房用MASM编译汇编代码无奈在64位windows中不兼容。                    找到了一种解决办法:用DOSBox0.74挂载masm到其他盘,在其他盘中进行编译操作。   具体方法:   1.下载安装DOSBox0.74之后运行会出来命令框;   2.mount输入命令Mount e: d:/masm(我们是将masm文件放在D盘下,用命令挂载到E盘

you_need_me的博客 1万+

MASM不兼容问题

点击设置-编译器-Masm5.0重新点击生成exe,成功。运行exe文件说不支持16位。

FYEFEIFEI的博客 426

Windows系统编程——进程篇:获取环境变量

本文对比了Windows和Linux系统下获取环境变量的方法。在Windows系统中,可以通过GetEnvironmentStrings获取环境变量块,该块以\0分隔的name=value字符串组成,最后以双空字符结束。文章详细介绍了如何遍历、拆分这些变量,并存储到STL容器如std::map和std::vector中。同时指出Windows对字符编码的特殊处理,建议不要直接修改环境变量块。Linux系统则通过environ全局变量获取环境变量,采用C运行时库的方式实现。两种系统在环境变量处理上存在明显差异

charlie114514191的博客 1149
上一篇: __declspec(naked)(裸函数)和__asm
下一篇: 汇编调用C库函数
cmdhack
博客等级 码龄19年 20粉丝 77原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值