如何在C / C ++中从DLL的源调用由DLL的调用者定义的函数?

时间:2019-08-25 12:18:15

标签: windows visual-studio dll

我想从dll调用dll的调用者定义的函数。我正在使用C / C ++应用程序。根据提供的配置,主应用程序可能会或可能不会使用某些dll,并且双方(主应用程序和dll)都需要调用彼此的其他功能。这些示例很好地解释了如何创建一个dll并在运行时调用其功能。

https://docs.microsoft.com/en-us/cpp/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp?view=vs-2019

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应用程序。

0 个答案:

没有答案