C++/共享变量或在同一 DLL 中将数据从非托管发送到托管

C++ / Share variable or send data from unmanaged to managed in the same DLL

本文关键字:数据 共享变量 DLL C++      更新时间:2023-10-16

我有一个包含非托管部件 (DllMain) 和托管C++部件的混合模式 DLL。

我在 DllMain 中计算一些文件夹,并希望在调用托管部件时将数据共享/发送到托管部件。

我使用来自另一个C++程序的加载库加载 DLL。

如何共享数据或将数据从 DllMain 发送到受管部件?

我必须分享/发送一些字符*。

谢谢

您需要从托管 DLL 导出本机函数,本机 DLL 可以调用该函数。或者,您可以有一个接口(C++接口),由 CreateThisObject 或类似接口提供支持,它将实例化派生类(接口)。此接口以及创建函数将由托管 DLL 提供,本机 DLL 将简单地将其用作普通C++类。

伪代码类型如下所示

// Export function only
EXPORT
int DoSomethingInManagedDLL(args);
// Export hidden class, through an interface
class IDLLHelper
{
   virtual void DoSomething() = 0;
};
EXPORT IDLLHelper* CreateDLLHelper();
// Some class, known only to managed DLL
// This class, as well as above' interface is native
class DLLHelperImpl : public IDLLHelper
{
   void DoSomething()
   {
    // actual code
   }
};