【问题标题】:Using the same dll in another dll and a third codebase that runs the executable在另一个 dll 和运行可执行文件的第三个代码库中使用相同的 dll
【发布时间】:2021-03-19 21:13:42
【问题描述】:

所以基本上我正在创建自己的 dll 用于 c# 代码库,使用 c++ 和 c 样式层来导出函数。问题是代码的 c# 部分(实际运行并使用 dll)和我的库本身都使用另一个在全局状态下运行的库(它是 imgui,所以让我们这样称呼它,即使它大部分无关紧要) .

我在自己的 dll 中将 imgui 初始化为某些设置,然后在 c# 代码中使用它的一些功能。目前,我只是将库编译到我的 dll 中,并自己做一个 c# 绑定,通过我自己的 dll 发出对 imgui 的调用。我的问题是我是否可以将 imgui 作为 dll 用于我自己的 dll 和主 c# 程序中,以便共享状态并且初始化步骤为我自己的 dll 和 c# 代码初始化相同的代码。

也就是说,c# 代码调用我自己的 dll 中的一个函数来初始化它,该函数在我的 dll 和可执行文件的公共目录中导入一个 dll (imgui),并初始化 IT。在此之后,导入我的 dll 和 imgui 的主 c# 程序然后调用 imgui 函数来操作它的状态。我的 dll 和主 c# 程序会处理相同的 imgui 状态吗?

【问题讨论】:

    标签: c# c++ c dll


    【解决方案1】:

    一般是的

    我说“一般”是因为有一些条件:

    一切都需要在同一个过程中(你不清楚,但我认为是这样)

    两个调用者都需要能够处理状态。例如,如果状态是在堆上分配的内存,那么两个调用者都需要能够获得指向它的指针,否则它需要是一个全局变量,它们可以直接或间接访问。

    真的就像是 3 个不同的 C# 模块一样

    (如果你真的需要使用C++,还要加上免责声明,但我相信你有你的理由)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-19
      • 1970-01-01
      • 1970-01-01
      • 2013-11-11
      • 2012-01-04
      • 2011-03-16
      • 1970-01-01
      相关资源
      最近更新 更多