欲作一正规DLL,其中的函数要引用主应用程序中的全局变量,该如何做?
另:DLL中的全局变量能作为应用程序的全局变量吗,二者有什么区别?

解决方案 »

  1.   

    dll能通过AfxGetApp()得到主程序的应用,你可以把全局变量放在app的类成员里,就行了
    dll的全局变量可以输出到外部,外部可以对它进行更改,如果不输出的话,就是dll中的全局变量
      

  2.   

    真是奇怪,直接通过指针传递不就完了?当DLL加载后,和主应用程序共享同一内存空间,不知有什么理由不能直接传指针?
    “DLL中的全局变量能作为应用程序的全局变量吗”是指DLL的全局变量可以被应用程序使用?还是指DLL的全局变量可以被应用程序直接引用(即隐式加载DLL)?如果想直接引用DLL的全局变量,只需将其导出即可。当然也可通过传递指针将DLL的全局变量指针传到主应用程序中(应禁止这样,危险)。
    如果你是因为MFC的原因而不能直接将指针传到DLL去,则需视具体情况具体处理,因为MFC使用了进程状态、模块状态、线程状态等多个各种状态来管理其自身的运作。Dll的全局变量相对于应用程序来说可以认为是其成员变量。如:两个进程都加载了同一个DLL,则只有一个DLL代码实例,对于每个该DLL的全局变量却有两个实例。不过就进程来说,都是进程内唯一的。