我想从dll调用dll的调用者定义的函数。我正在使用C / C ++应用程序。根据提供的配置,主应用程序可能会或可能不会使用某些dll,并且双方(主应用程序和dll)都需要调用彼此的其他功能。这些示例很好地解释了如何创建一个dll并在运行时调用其功能。
https://docs.microsoft.com/en-us/cpp/build/linking-an-executable-to-a-dll?view=vs-2019
但是它不能解释如何从dll调用Main应用程序中定义的函数。
当我尝试在dll的标头中声明相同的函数时,会引发错误,提示无法找到函数。
我如何告诉链接器某些功能将在运行时可用。在gcc中有--export-dynamic。这可以用于导出符号,以后共享对象可以使用这些符号。 Windows中有类似的东西吗?
编辑:
下面的讨论提供了一种可能的解决方案,在此调用者必须将函数作为参数传递给dll。
How to call a function defined in my exe inside my DLL?
在我的情况下,使用起来会很麻烦。我试图将Windows上的Linux应用程序移植到这里。 dll调用了许多方法。将它们全部作为函数传递给dll听起来不是一个好主意,但是作为最后的选择,这是可行的。我在采用这种方法时看到的另一个缺点是,这将要求每次插入(dll)希望使用Main应用程序的某些新功能时都要更改Main应用程序。