我有一个奇怪的问题。我有两个DLL,我们称它们为DLL-A和DLL-B。
DLL-A有一个名为f1()
的函数,而DLL-B也有一个同名的函数f1()
。现在,在DLL-A中,f1()
像这样调用DLL-B的f1()
。
DLL-A:
f1()
{
f1(); //this is DLL-B function, but having the same name
}
现在我的问题是,
f1()
会从 DLL-A 中进行递归调用吗?我有一个奇怪的问题。我有两个DLL,我们称它们为DLL-A和DLL-B。
DLL-A有一个名为f1()
的函数,而DLL-B也有一个同名的函数f1()
。现在,在DLL-A中,f1()
像这样调用DLL-B的f1()
。
DLL-A:
f1()
{
f1(); //this is DLL-B function, but having the same name
}
f1()
会从 DLL-A 中进行递归调用吗?函数体内的 f1()
调用了自身,导致无限递归,正如你所怀疑的那样。以下是一些可能的解决方案:
GetProcAddress
显式导入而不是隐式导入。这允许您将导入的函数命名为任何您喜欢的名称。A_f1
。A_f1()
{
f1() //this calls DLL-B's f1
}
EXPORTS
f1 = A_f1
A_f1
,希望将其导出并命名为f1
以供其他组件使用。这样,每个使用DLL-A并调用f1
(期望获取函数A)的人都将获得A_f1
。#pragma comment(linker, "/export:MyFunc=_MyFunc@8")