C++ 从C+导出相同的函数+;启用了删除冗余COMDAT的不同名称和不同地址下的dll

C++ 从C+导出相同的函数+;启用了删除冗余COMDAT的不同名称和不同地址下的dll,c++,winapi,visual-c++,C++,Winapi,Visual C++,我正在使用要求按名称导出函数的Excel XLL Addin。对于我的需求,我需要两个导出的函数在内部调用同一个函数。 像这样: LPXLOPER WINAPI func1(...) { return MyFunc(); } LPXLOPER WINAPI func2(...) { return MyFunc(); } 当在链接器优化选项中指定了删除冗余COMDAT(/OPT:ICF)选项时,函数导出将指向同一地址。这是不可接受的,因为Excel缓存地址,因此加载项不能按要求工

我正在使用要求按名称导出函数的
Excel XLL Addin
。对于我的需求,我需要两个导出的函数在内部调用同一个函数。 像这样:

LPXLOPER WINAPI func1(...)
{
   return MyFunc();
} 
LPXLOPER WINAPI func2(...)
{
   return MyFunc();
} 
当在链接器优化选项中指定了删除冗余COMDAT(/OPT:ICF)选项时,函数导出将指向同一地址。这是不可接受的,因为Excel缓存地址,因此
加载项不能按要求工作

除了添加虚拟对象,还有其他选择吗
是否将参数设置为内部函数以防止出现这种情况

神秘的。为什么不直接更改链接器选项?为什么excel会因为两个函数恰好共享同一个地址而失败?func1和func2都是导出的符号,对吗?问题是它们应该作为使用不同参数的不同函数发布到Excel。如果它们共享相同的地址,Excel会感到困惑,并对它们中的每一个使用相同的向导签名。