dll调用全局变量 出错
我用的是 vs2005
dlltest工程:
lib.h
#ifndef LIB_H
#define LIB_H
extern int dllGlobalVar;
extern "C" int GetGlobalVar();
#endif
lib.cpp
#include "lib.h"
#include <windows.h>
int dllGlobalVar;
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
dllGlobalVar=100;
break;
case DLL_THREAD_DETACH:
case DLL_THREAD_ATTACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
int GetGlobalVar()
{
return dllGlobalVar;
}
lib.def
LIBRARY "Dlltest"
EXPORTS
;或dllGlobalVar CONSTANT
dllGlobalVar DATA
GetGlobalVar
CallDll工程:
#include <windows.h>
#include <stdio.h>
#pragma comment(lib,"dllTest.lib")
extern "C" _declspec(dllimport)int GetGlobalVar();
extern int dllGlobalVar;
int main(int argc, char* argv[])
{
printf("%d ",GetGlobalVar());
*(int *)dllGlobalVar = 1;
//特别要注意的是这种方法导出的并不是变量本身,而是DLL中导出变量的指针,应用程序必
//须通过强制指针转换来使用
printf("%d ",GetGlobalVar());
scanf("rr");
return 0;
}
出错:
错误 1 error LNK2001: 无法解析的外部符号 "int dllGlobalVar" (?dllGlobalVar@@3HA) dllcall.obj
错误 2 fatal error LNK1120: 1 个无法解析的外部命令 E:\Ebook\学习笔记\C++APIWIN32MFC\029_DLL动态链接库导出全局变量\Debug\DllCall.exe 1