我有一个主应用程序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文件。
答案 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);