gpt4 book ai didi

c++ - 从库函数调用应用函数是否正确?

转载 作者:搜寻专家 更新时间:2023-10-31 01:35:10 25 4
gpt4 key购买 nike

我们有一个应用程序,主要由 3 个主要模块组成。

现在我被指示将应用程序的 3 个模块更改为 3 个动态库。此事件背后的原因是,其中一个模块的任何更改都不会影响其他模块的发布周期。

到目前为止,它对我来说很好。

但问题是库文件需要应用程序(可执行文件)中的某些函数。

所以他们从库文件中调用写在应用程序中的函数。我无法消化这个,因为应用程序可以调用库,但是库如何调用应用程序。

因为这是我们的内部图书馆,我们可以按照其他人的建议这样做吗?

最佳答案

您可以从库中获得一种SetCallback 函数,采用函数指针。您从可执行文件中调用它,传递可执行文件中可用的函数指针。库会记录这个函数的地址,稍后会调用它。

执行文件:

void CallMe(int param);

...
SetCallback(Callme);

图书馆:

void(*func_in_exe)(int);

void SetCallback(void(*pf)(int))
{
func_in_exe = pf;
}

void SomeLibraryFunction()
{
if (func_in_exe != NULL)
(*func_in_exe)(100);
}

SetCallback 需要类型为 void (*)(int) 的函数指针。此函数将更新同一类型的全局/静态变量。

如果你有最新的 C++ 编译器,你可以将它包装在 std::function 对象中,同时简化函数指针语法。

关于c++ - 从库函数调用应用函数是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37854804/

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