全局外部指针变量在DLL中不可见

时间:2017-08-03 10:47:20

标签: c++ dll namespaces global-variables global

我有一个主应用程序EXE“main.EXE”。我已在头文件globalf.h中创建了一个全局指针,其外部类似于:

globalf.h

extern SomeClass* cPtr;

现在在Main.EXE代码中

#include globalf.h
INitialize()
{
cPtr = new SomeClass(); // works fine.

D.DLL:

#include "globalf.h"
void DllFunc()
{
cPtr->someFunction1(); // link error unreslved external symbol.
  

我甚至无法访问DLL代码中的全局指针变量   虽然我已经声明了inMain.EXE代码。

     

我知道main.EXE的Initialize()中的这个声明是不可见的   DLL。但是我该如何实现这一目标呢?有没有办法在C ++中进行处理   DLL和&之类的全局变量EXE文件。

1 个答案:

答案 0 :(得分:0)

我没有导出全局指针变量,而是将它和你需要在结构中的EXE和DLL之间共享的其他变量打包,然后将指针作为函数参数传递给该结构,例如DLL初始化函数。

// Function exported from the DLL.
// Called by the EXE during initialization.
//
// The DLL receives a pointer to the global state structure,
// shared between the EXE and the DLL.
//
BOOL YourDllInit(GlobalStuff* pGlobal);