windows "unresolved external symbol __asan_shadow_memory_dynamic_address" 上的 VC2019 地址消毒器 64 位 link 错误
VC2019 address sanitizer 64 bit link error on windows "unresolved external symbol __asan_shadow_memory_dynamic_address"
下面的简单程序
#include <malloc.h>
int main(int argc, char **argv)
{
char* arr=malloc(10);
arr[10]='[=13=]';
return 0;
}
在 32 位动态链接中使用 VC2019 16.8.2 构建良好
cl -Zi -fsanitize=address -MD clang_rt.asan_dynamic-i386.lib xx.c
并在运行程序时报内存错误。
但是,当使用 64 位变体时,出现链接错误
> cl -Zi -fsanitize=address -MD clang_rt.asan_dynamic-x86_64.lib xx.c
Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29336 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
xx.c
Microsoft (R) Incremental Linker Version 14.28.29336.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:xx.exe
/debug
clang_rt.asan_dynamic-x86_64.lib
xx.obj
xx.obj : error LNK2019: unresolved external symbol __asan_shadow_memory_dynamic_address referenced in function main
xx.exe : fatal error LNK1120: 1 unresolved externals
在 clang_rt.asan_dynamic-x86_64.lib
和 dumpbin
中查找缺少的符号。
请注意,在两种体系结构上,示例的静态链接(没有 _dynamic 库)都可以工作,但由于更大的依赖性(Qt dll),我需要动态链接。
有人已经偶然发现了吗?
问候,狮子座
原来我还需要 另一个 link 64 位库 clang_rt.asan_dynamic_runtime_thunk-x86_64.lib
cl -MD -fsanitize=address clang_rt.asan_dynamic-x86_64.lib clang_rt.asan_dynamic_runtime_thunk-x86_64.lib xx.c
link正确运行程序并在启动程序后出现消毒剂错误。
页面 https://devblogs.microsoft.com/cppblog/asan-for-windows-x64-and-debug-build-support/ 有一个很好的 table,它列举了所有不同的构建模型以及需要哪些 asan 库。
下面的简单程序
#include <malloc.h>
int main(int argc, char **argv)
{
char* arr=malloc(10);
arr[10]='[=13=]';
return 0;
}
在 32 位动态链接中使用 VC2019 16.8.2 构建良好
cl -Zi -fsanitize=address -MD clang_rt.asan_dynamic-i386.lib xx.c
并在运行程序时报内存错误。 但是,当使用 64 位变体时,出现链接错误
> cl -Zi -fsanitize=address -MD clang_rt.asan_dynamic-x86_64.lib xx.c
Microsoft (R) C/C++ Optimizing Compiler Version 19.28.29336 for x64
Copyright (C) Microsoft Corporation. All rights reserved.
xx.c
Microsoft (R) Incremental Linker Version 14.28.29336.0
Copyright (C) Microsoft Corporation. All rights reserved.
/out:xx.exe
/debug
clang_rt.asan_dynamic-x86_64.lib
xx.obj
xx.obj : error LNK2019: unresolved external symbol __asan_shadow_memory_dynamic_address referenced in function main
xx.exe : fatal error LNK1120: 1 unresolved externals
在 clang_rt.asan_dynamic-x86_64.lib
和 dumpbin
中查找缺少的符号。
请注意,在两种体系结构上,示例的静态链接(没有 _dynamic 库)都可以工作,但由于更大的依赖性(Qt dll),我需要动态链接。
有人已经偶然发现了吗?
问候,狮子座
原来我还需要 另一个 link 64 位库 clang_rt.asan_dynamic_runtime_thunk-x86_64.lib
cl -MD -fsanitize=address clang_rt.asan_dynamic-x86_64.lib clang_rt.asan_dynamic_runtime_thunk-x86_64.lib xx.c
link正确运行程序并在启动程序后出现消毒剂错误。
页面 https://devblogs.microsoft.com/cppblog/asan-for-windows-x64-and-debug-build-support/ 有一个很好的 table,它列举了所有不同的构建模型以及需要哪些 asan 库。