首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C++如何在应用程序的DLL之间进行通信?

C++如何在应用程序的DLL之间进行通信?
EN

Stack Overflow用户
提问于 2009-09-25 16:11:15
回答 5查看 4K关注 0票数 1

我有一份申请表和两份Dlls。这两个库都由应用程序加载。我没有应用程序的源代码,但有库的源代码。我希望在lib A中实例化一个类,并希望在lib B中也使用此实例。

我该怎么做呢?我不确定,但我认为这两个库在应用程序的不同线程中使用。

我不知道我必须在哪里寻找解决方案。

EN

回答 5

Stack Overflow用户

发布于 2009-09-25 16:37:36

将两个dll加载到同一进程中是一个相当简单的设置。您只需小心使用模块作用域,它将与dll作用域相同。例如,对于任何静态对象,每个dll都有自己的一组静态实例。接下来,您需要了解如何跨边界引用函数/类,以及哪种类型的类型可以安全地用作参数。

看看任何关于dllexport和dllimport的文档-如果你用这些术语搜索,这个网站上有几个有用的问题。

票数 1
EN

Stack Overflow用户

发布于 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的两个实例。

票数 1
EN

Stack Overflow用户

发布于 2009-09-26 00:15:18

不是的。把DLL看作是一个普通的库。两者都可以在单个线程中使用。

如果你想在X库中使用一个类A,你必须传递一个指向它的指针/引用。这同样适用于库Y。通过这种方式,两个库都可以处理相同的类/数据。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1478227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档