初始化dll之间共享的变量

时间:2011-02-23 18:40:00

标签: c++ dll environment-variables shared extern

我都是, 我有一个win32应用程序和几个必须使用全局变量的DLL。在每个dll我放

extern MYTYPE* myvariable = NULL;

在主程序中我有

MYTYPE* myvariable = NULL;
mavariable = new MYTYPE();
....

现在,当加载DLL时,myvariable为NULL,我无法使用它。如何与所有DLL共享主程序的实例?

2 个答案:

答案 0 :(得分:1)

您应该对程序进行一些更改。如果可能,您可以将myvariable从EXE移动到DLL中的一个。然后,您可以继续使用导入库。

一般来说,您可以从EXE导出函数或数据,但在大多数情况下,执行此操作的意义较小。所以你很少能看到这一点。例如,WinWord.exe或Excel.exe执行此操作。

如果确实需要从EXE导出格式或数据并在DLL中使用它,则应使用动态绑定GetProcAddressGetModuleHandle(NULL)。您可以在DllMain内进行此类手动绑定。您可以在DLL的本地myvariable中保存的EXE的myvariable地址。

答案 1 :(得分:0)