【发布时间】:2014-11-28 08:34:15
【问题描述】:
我有一个混合模式 DLL,其中包含一个非托管部分 (DllMain) 和一个托管 C++ 部分。
我在 DllMain 中计算了一些文件夹,我想在它被调用时将数据共享/发送到托管部分。
我使用 LoadLibrary 从另一个 C++ 程序加载 DLL。
如何从 DllMain 共享数据或将数据发送到托管部分?
我必须分享/发送一些字符*。
谢谢
【问题讨论】:
-
那是非法的,你可以在 DllMain() 中执行的操作由于加载程序锁而受到严格限制。调用托管代码肯定不行,CLR 不能加载。使用 __declspec(dllexport) 是一种提供本机 C++ 程序可以调用的入口点的简单方法。但是要注意成本,托管代码喜欢抛出异常,而当这种情况发生时,你会像蝙蝠一样盲目。托管 CLR 或使用 [ComVisible] 类是更好的方法。