C++ 初始化DLL之间共享的变量

C++ 初始化DLL之间共享的变量,c++,dll,environment-variables,shared,extern,C++,Dll,Environment Variables,Shared,Extern,我都, 我有一个win32应用程序和几个必须使用全局变量的DLL。在我放入的每个dll中 extern MYTYPE* myvariable = NULL; 在我的主程序中 MYTYPE* myvariable = NULL; mavariable = new MYTYPE(); .... 现在,加载DLL时,myvariable为NULL,我无法使用它。如何将主程序的实例与所有DLL共享?也许您正在寻找此实例:您应该在程序中进行一些更改。如果可能,您可以将myvariable从EXE移动到

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

extern MYTYPE* myvariable = NULL;
在我的主程序中

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

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

也许您正在寻找此实例:

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

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


如果确实需要从EXE导出frunction或数据,并在DLL中使用它,则应针对和使用动态绑定。你可以在里面做这种手工装订。您可以保存在DLL的本地
myvariable
中的EXE的
myvariable
地址。

否,我只需要使用相同的MYTYPEA实例初始化每个DLL中的变量。DLL无法从EXE导入变量(或函数)。我将DLL链接到win32程序,我将使用一个全局变量,该变量在另一个DLL中定义,但必须在程序中初始化,以便所有其他DLL都可以使用它。实际变量在DLL中声明,在其他DLL中定义为extern。基本上,我需要初始化dll中的变量,在其他dll中,我可以调用一个获取变量的方法instance@Stefano:在您的问题文本中,您写道“在每个dll中,我放置了extern MYTYPE*myvariable=NULL”。所以在每个DLL中都有单独的变量。除了一个将拥有变量的DLL之外,您应该从所有DLL中删除初始化。您应该从DLL中导出变量,并在所有其他DLL或EXE中导入变量。请看其中描述了如何导出和导入数据。同时阅读