C++ 如何在MSVC中使用未命名的命名空间时获得可复制的构建?

C++ 如何在MSVC中使用未命名的命名空间时获得可复制的构建?,c++,visual-studio,visual-c++,C++,Visual Studio,Visual C++,workerFunc是未命名命名空间中的函数。MSVC编译器(版本19.16.27026.1,适用于x64)用于从同一翻译单元生成两个目标文件,每台机器一个 以下是编译器为相同源代码生成的符号名称: 机器1: ?workerFunc@?A0x65bd3c1e@@YAXPEAVMyClass@ns1@ns2@@NNNAEAN111AEA_N@Z 机器2: ?workerFunc@?A0x50c2f7a6@@YAXPEAVMyClass@ns1@ns2@@NNNAEAN111AEA_N@Z 如何

workerFunc
是未命名命名空间中的函数。MSVC编译器(版本19.16.27026.1,适用于x64)用于从同一翻译单元生成两个目标文件,每台机器一个

以下是编译器为相同源代码生成的符号名称:

机器1:

?workerFunc@?A0x65bd3c1e@@YAXPEAVMyClass@ns1@ns2@@NNNAEAN111AEA_N@Z
机器2:

?workerFunc@?A0x50c2f7a6@@YAXPEAVMyClass@ns1@ns2@@NNNAEAN111AEA_N@Z

如何强制编译器为未命名命名空间中的函数为不同的计算机生成相同的符号名?

但为什么?我不确定这是否可能-未命名的名称空间实际上不必生成任何类型的符号,因为它们是内部链接的。请参阅本文:。尝试使用它提到的实用程序,
undname.exe
,查看名称的未修饰方式是否存在细微差异(这可能表明编译器的选项不同)。