vs2019编译CryptVdisk提示找不到符号

VS2013 Error LNK2011简易解决方案 去微软的MSDN搜,得到的是下面一大串英文:precompiled object not linked in; image may not run If you use precompiled headers, LINK requires that all of the object files created with precompiled headers must be linked in. 阅读详情

使用vs2019编译32位Vdisk驱动时,提示Crypto.lib库的几个函数符号为找到实现,编译64位没问题,错误如下所示:

2>Crypto.lib(blake2s_SSE2.obj) : warning LNK4257: 未对内核模式编译对象文件;映像可能不会运行
2>Crypto.lib(blake2s_SSSE3.obj) : warning LNK4257: 未对内核模式编译对象文件;映像可能不会运行
2>Crypto.lib(blake2s_SSE41.obj) : warning LNK4257: 未对内核模式编译对象文件;映像可能不会运行
2>Crypto.lib(rdrand.obj) : warning LNK4257: 未对内核模式编译对象文件;映像可能不会运行
2>Crypto.lib(kuznyechik_simd.obj) : warning LNK4257: 未对内核模式编译对象文件;映像可能不会运行
2>Crypto.lib(SerpentFast_simd.obj) : warning LNK4257: 未对内核模式编译对象文件;映像可能不会运行
2>Crypto.obj : error LNK2019: 无法解析的外部符号 _aes_hw_cpu_decrypt_32_blocks@8,函数 _DecipherBlocks@16 中引用了该符号
2>Crypto.obj : error LNK2019: 无法解析的外部符号 _aes_hw_cpu_encrypt_32_blocks@8,函数 _EncipherBlocks@16 中引用了该符号
2>Sha2.obj : error LNK2019: 无法解析的外部符号 _sha512_compress_nayuki@8,函数 _SSE2Transform@16 中引用了该符号
2>Sha2.obj : error LNK2019: 无法解析的外部符号 _sha256_compress_nayuki@8,函数 _Sha256AsmTransform@16 中引用了该符号

为什么找不到函数实现? 经过查看相关函数实现的asm源码,发现声明函数的时候都会有一个条件编译判断,如果定义了MS_STDCALL宏,则使用cpp的调用约定声明函数

sha256-x86-nayuki.S源码:

/* void sha256_compress_nayuki(uint32_t state[8], const uint8_t block[64]) */

 .ifdef MS_STDCALL
 .globl _sha256_compress_nayuki@8
 _sha256_compress_nayuki@8:
 .else
 .globl sha256_compress_nayuki
 .globl _sha256_compress_nayuki
 sha256_compress_nayuki:
 _sha256_compress_nayuki:
 .endif

根据错误提示_sha256_compress_nayuki@8 明显,这是一个带有名称粉碎的函数,也就是cpp的调用约定;

发现这个问题后,直接在vs项目属性的预处理器里面新增MS_STDCALL,尝试编译,还是报同样错误,说明这个宏定义没有生效;

最后发现,上面报错的几个函数实现都在不同的asm文件中,在编译时通过通过nasm和yasm来编译成obj文件,然后vs编译的时候直接将obj链接进去。

因为编译asm文件的时候是通过yasm.exe 或者nasm.exe编译的,无法读取vs项目属性中定义的宏;

解决方案:
在对应asm文件属性中,修改命令行,传入asm编译工具的-D参数,指定MS_DTDCALL,这样asm文件中的条件编译就可以生效了

在这里插入图片描述

WSL子系统启动报错 Wsl/Service/CreateInstance/CreateVm/HCS_E_SERVICE_NOT_AVAILABLE WSL子系统启动报错 :Wsl/Service/CreateInstance/CreateVm/HCS_E_SERVICE_NOT_AVAILABLE 于是分析原因,最终发现是Windows功能中的虚拟机平台功能不知道什么时候被取消了。 阅读详情

相关推荐

告别效率低谷:用ADS仿真手把手教你设计高回退Doherty功放(附1:2非对称案例)

本文详细解析了如何使用ADS仿真设计高回退Doherty功放,特别针对1:2非对称架构进行深入探讨。通过优化功率分配比、峰值管开启阈值等关键参数,显著提升功放在9dB回退点的效率至75%以上,适用于LTE等高PAPR信号场景。文章还提供了ADS仿真环境搭建、参数优化及工程化设计的实用技巧。

weixin_33743248的博客 453

vs2015单元测试 - error LNK2011: 未链接预编译对象;映像可能不能运行

单元测试的例子很多, 但都报这个错误 .obj : error LNK2011: 未链接预编译对象;映像可能不能运行 百度了很多篇文章都没有具体提到。Google一下找到答案 https://www.programmersought.com/article/6783936497/ 原因是是要把stdafx.obj 加入到附加依赖项。 详细流程: 1. 创建一个简单的 WIN32控制台应用程序 2. 添加类Op, 并给该类增加两个函数Add 和 Sub 3. 添加一个单元测..

gerry2000的专栏 4676

告别玄学调试:手把手教你读懂全志芯片的sys_config.fex配置文件(以i2c配置为例)

本文深入解析全志芯片的sys_config.fex配置文件,以I2C设备驱动为例,详细讲解从引脚定义到驱动加载的全过程。通过实战案例和高级调试技巧,帮助开发者快速掌握硬件配置与内核驱动的联动机制,提升开发效率。

weixin_33737134的博客 418

VS C++ 常见错误及解决

vs2013 C++ 常见错误及解决方法

u011109761的专栏 953

基于YOLOX与LPRNet的车牌检测与识别系统(Python+UI界面)实战指南

本文详细介绍了如何利用YOLOX目标检测模型与LPRNet车牌识别模型,从零构建一个完整的车牌检测与识别系统。通过解析CCPD数据集、训练深度学习模型,并最终集成到PyQt5开发的图形化UI界面中,提供了一个从数据处理到应用部署的完整实战指南,帮助开发者快速掌握智能交通系统中的关键技术。

weixin_29230901的博客 337

软件自动化测试脚本如何编写,编写自动化测试脚本的几点注意事项

我们需要自动化测试脚本的原因:1、验收测试是一项非常复杂和费力的被用来确保软件质量的环节。它的目的就是使软件能得到充分运行并且能使其符合原始需求。2、测试的目的无非就是满足了两个结果:测试通过或测试不通过。为了能实现每个测试结果,必须要明确每个测试用例。并且对于整个系统而言在合同中必须定义测试用例的失败标准,而且这个失败标准数必须是可接受的。3、测试用例的通过条件必须有一个清晰的标准,标准可以被定...

weixin_39575775的博客 2251

error LNK2011

Induce的预编译文件 *pch,因为你的两个项目一模一样所以冲突了,我这里将宏IntDir修改了,当然你也可以改名字。自己使用了预编译,Main链接了Induce。

Ma_Hong_Kai的博客 830

R语言机器学习算法实战系列(十一)MLP算法分类器 (Multi-Layer Perceptrons)

本文介绍了多层感知器(MLP)分类算法的原理和计算步骤,并通过R语言实现MLP模型。MLP是一种前馈神经网络,包含输入层、隐藏层和输出层,通过激活函数引入非线性,利用前向传播和反向传播进行训练。文章详细描述了数据预处理、数据切割、模型构建、预测和评估等步骤,并提供了乳腺癌数据集(BreastCancer_clean.csv)的下载链接。通过R包如neuralnet和caret,读者可以逐步实现MLP模型,并评估其分类性能。

专注生信领域 932

蓝桥杯 stm32 PWM 测量频率

参考 数据手册:比赛 的板子 上面有两个信号发生器,如下图。通过 扭动 可变电阻 (R40, R39), 来实现 PWM 频率的改变。PA15PB4。PA15,PB4分别使用TIM2_CH1TIM3_CH1来对频率进行捕获。

wuyiyu_的博客 2931

基于 Qt C++ 的 2D 动画制作工具

你可以修改它的中心坐标 (X, Y)、宽度 (W)、高度 (H),或点击 "选择颜色" 按钮改变其填充色。* **图形视图 (`QGraphicsView` 和 `QGraphicsScene`)**: 用于显示和编辑当前帧的内容。

寒寒豆豆软件公司的博客 112

错误 LNK2011 未链接预编译对象;映像可能不能运行

项目属性–预编译头–不使用预编译头

weixin_36212725的博客 5460

英伟达 Jetson AGX Thor 官方入门教程(二)CUDA、Docker、JetPack 设置

本文详细介绍了NVIDIA Jetson AGX Thor开发套件的安装与配置流程。主要内容包括:1) BSP安装的三种方法(Jetson ISO、SDK Manager和Linux刷写脚本)及其适用场景;2) Docker环境的完整配置步骤及测试方法;3) CUDA工具包的两种安装方式(容器化和原生安装)及其性能对比;4) JetPack SDK的安装选项。文章提供了详细的命令行操作指南和故障排除建议,帮助开发者快速搭建AI开发环境,充分发挥Jetson平台的硬件性能优势。

机器人控制与仿真应用 1731

keil 5 armlink 链接错误和警告解释大全

keil 5 armlink 链接错误和警告解释大全

Miao8miao的博客 4675

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

visio安装包

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

解决 vc6 unresolved external symbol ___security_cookie 问题

vc6使用高版本编译器生成的lib时,编译不通过: detours.lib(detours.obj) : error LNK2001: unresolved external symbol ___security_cookie detours.lib(disasm.obj) : error LNK2001: unresolved external symbol ___security_cook

QQstone的专栏 4621

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

VS2005环境下编译C++报错

WinGenerateKey.obj : error LNK2011: 未链接预编译对象;:连接器->输入,添加:..\WinGenerateKey\Debug\stdafx.obj。

向着光的那方 402

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

error LNK2011: precompiled object not linked in; image may not run

今天第一次尝试写一个单元测试,用的vs2013自动生成的测试工程,在最后build的时候出现了这个错误。 看起来是在说我的被测试单元的obj不能在预编译的时候link。在网上找了一些解决办法,有的说是vs出错了,重新build一下就好(这个最扯的);有的说是exe调用的库之间的依 赖关系不对,要调整包含顺序,但是我这里一个dll调用另一个obj,不存在这种问题啊。 后来在msdn查到了关于这

周大侠还不够厉害 2478

error LNK2011: precompiled object not linked in; image may not run 问题解决方法

error LNK2011: precompiled object not linked in; image may not run 问题解决方法:   问题发生环境:A.exe 依赖B.lib,B.lib 依赖C.lib,B.lib 和C.lib 都是静态库   设置:

kingli_2008的专栏 优快云 博客 4468

error LNK2011: 未链接预编译对象;映像可能不能运行

在VS2015编辑MFC程序时,因为需要在原项目中添加一小部分新功能,故复制原项目,打算在副本中添加,结果就出现如题问题。记录一下解决方法:清理解决方案->重新生成解决方案就解决了。

weixin_42553258的博客 229

解决Detours编译报错(在Win10+vs2015开发环境下)

原文链接 1、首先去官网点击打开链接 下载安装 express版本的特点:不能全局拦截,也不能源码级别拦截 2、编译 我这里使用Windows10和vs1015, 首先打开 所有应用-visual studio 2015-选择vs2015开发人员命令提示 进入DetoursExpress30的安装目录 cd D:\Software\DetourExpress30\src 输入n

墨迹是种态度 6038

操作系统之旅(006)—— 编译内核映像

前面已经成功编译并运行引导程序,现在进行内核部分的编译修改。首先针对Makefile进行修改,现我们定下内核映像文件在build目录下生成,名为system.bin,则对all规则修改:all: build/bootsect.bin build/setup.bin build/system.bin    dd if=build/bootsect.bin of=bootimage-fd.img bs...

lp_19880801的博客 1753

VC++6.0常见编译错误中英文对照表

fatal error C1003: error count exceeds number; stopping compilation 中文对照:(编译错误)错误太多,停止编译 分析:修改之前的错误,再次编译 fatal error C1004: unexpected end of file found 中文对照:(编译错误)文件未结束 分析:一个函数或者一个结构定义缺少“}”、或者在一个函数调用

Hello______world的巢 7256

成功解决严重性代码说明项目 文件 行禁止显示状态 错误 LNK1104 无法打开文件“opencv_world341d.obj”

1、安装VS组件后能够正常编译运行C++程序 2、配置VS2013和Opencv2.4.9 高版本的网上也许多教程,多甄别,正常配置完,一般不会有问题 自己配置完也出现过Opencv编译错误,新建空白工程后,能够正常运行,一时也摸不着头绪。 ----------------------------------------------------------------- 问题...

进击的龙 9万+

常见编译/链接错误及其解决办法

1. 解决error LNK2005: ___crtExitProcess 已经在 LIBCMTD.lib(crt0dat.obj) 中定义 有的時候, 在 Debug 模式下編譯沒問題, 換到 Release 模式就發生一堆問題. 典型的例子, 就是因為 c++ runtime library 設定不同, 所造成的重複定義連結錯誤. 而另一個常見的例子是 專案與 library 使

cc198877的专栏 5006

VS2005编译DDK碰到的几个错误的处理

<br />错误1:<br />LINlinK : warning LNK4096: /BASE 值“0x10000”对于 Windows 95 和 Windows 98 无效;映像可能不能运行<br />处理方法:<br />一、在链接器的命令行中输入如下命令<br />/DRIVER /subsystem:native /SECTION:INIT,D /IGNORE:4078  /IGNORE:4078 <br />二、<br />直接将链接器的“调试/子系统”选项设置成“本机(/SUBSYSTEM:N

jinggangshi的专栏 4452
上一篇: RtlUpcaseUnicodeString转换大写后,Buffer丢失NULL结束符,传入垃圾字符
下一篇: 使用MapView分块读写大文件,需要注意的地方
FFE4
博客等级 码龄9年 234粉丝 166原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值