我有一份申请表和两份Dlls。这两个库都由应用程序加载。我没有应用程序的源代码,但有库的源代码。我希望在lib A中实例化一个类,并希望在lib B中也使用此实例。
我该怎么做呢?我不确定,但我认为这两个库在应用程序的不同线程中使用。
我不知道我必须在哪里寻找解决方案。
发布于 2009-09-25 16:37:36
将两个dll加载到同一进程中是一个相当简单的设置。您只需小心使用模块作用域,它将与dll作用域相同。例如,对于任何静态对象,每个dll都有自己的一组静态实例。接下来,您需要了解如何跨边界引用函数/类,以及哪种类型的类型可以安全地用作参数。
看看任何关于dllexport和dllimport的文档-如果你用这些术语搜索,这个网站上有几个有用的问题。
发布于 2009-09-25 21:28:02
您必须意识到,即使您的DLL由主机应用程序使用,也不会阻止您(即您的DLL)使用您的DLL。所以在你的DLL A中,你可以加载和使用你的DLL B,并调用函数和其他东西。卸载DLL A时,也释放DLL B。DLL是引用计数的,因此DLL A的引用为1(主机应用程序),DLL B的引用为2(主机应用程序和DLL A)。您不会在同一进程中加载DLL B的两个实例。
发布于 2009-09-26 00:15:18
不是的。把DLL看作是一个普通的库。两者都可以在单个线程中使用。
如果你想在X库中使用一个类A,你必须传递一个指向它的指针/引用。这同样适用于库Y。通过这种方式,两个库都可以处理相同的类/数据。
https://stackoverflow.com/questions/1478227
复制相似问题