gpt4 book ai didi

c++ - 构建两个相互依赖的dll

转载 作者:行者123 更新时间:2023-11-28 08:32:44 25 4
gpt4 key购买 nike

我必须在这里相互依赖的 dll,我想构建它们而不必构建它们两次(强制构建它们并再次重建它们以允许链接)。

这是一个例子:

**DLL A**

void fooA()
{
fooBB();
}
void fooAA()
{
fooB();
}

**DLL B**

void fooB()
{
fooA();
}

void fooBB()
{
}

有没有一种方法可以在不进行重大重构的情况下构建这两个 DLL?

最佳答案

您可以使用 LoadLibaryGetProcAddr 来查找函数的地址,然后通过其地址调用 foo-functions。

下面的代码演示了如何做(你应该在真正的 DLL 中添加错误检查):

**DLL A**

typedef void fooB(void);
typedef void fooBB(void);
fooB* fooB_ptr;
fooBB* fooBB_ptr;
HMODULE hDllB;

void init()
{
hDllB = LoadLibrary(L"DllB.dll");
fooB_ptr = reinterpret_cast<fooB*>(GetProcAddr( hDllB, L"fooB" ));
fooBB_ptr = reinterpret_cast<fooBB*>(GetProcAddr( hDllB, L"fooBB" ));
}

void done()
{
FreeLibrary( hDllB );
}

void fooA()
{
fooBB_ptr();
}
void fooAA()
{
fooB_ptr();
}

DLL B 中相同。

关于c++ - 构建两个相互依赖的dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1137265/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com