我有一个包含非托管部件 (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
}
};