You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows下Hyperscan使用__aligned_malloc出现LNK2019链接错误求助

解决Hyperscan与DMD链接时__imp__aligned_malloc未找到的问题

问题根源

CMake阶段检测到_aligned_malloc是因为VS编译器能找到该函数(属于MSVC运行时库),但DMD默认链接的运行时库与Hyperscan构建时依赖的MSVC运行时不匹配,导致链接器无法找到动态导入符号__imp__aligned_malloc。

解决方案

1. 让DMD链接对应的MSVC运行时导入库

Hyperscan在VS2017下构建时默认依赖MSVC 2017的动态运行时(vcruntime140.dll),你需要在DMD编译命令中显式链接对应的导入库:

dmd your_program.d hs.lib "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.16.27023\lib\x64\vcruntime140.lib"

注意替换路径为你本地VS2017的实际安装路径;若Hyperscan是Debug构建,需使用vcruntime140d.lib。

2. 静态构建Hyperscan(避免依赖动态运行时)

如果不想手动链接MSVC库,可以在CMake构建Hyperscan时指定静态链接MSVC运行时:

cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreaded ..\

Debug版本则用:

cmake -G "Visual Studio 15 2017 Win64" -DCMAKE_MSVC_RUNTIME_LIBRARY=MultiThreadedDebug ..\

重新构建Hyperscan后,生成的hs.lib会将MSVC运行时静态嵌入,此时DMD编译时只需链接hs.lib即可,无需额外运行时库。

3. 确认架构匹配

确保你使用的是64位DMD(对应Win64版本的Hyperscan),32位DMD无法链接64位的hs.lib,也会触发类似符号未找到的错误。

内容的提问来源于stack exchange,提问作者backtrack

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 07:02:34