DLL과 EXE간의 데이타를 공유하기 위해서는 두가지 방법이 존재합니다.
1. data_seg pragma를 사용하여 공유할 섹션만들기
(1) 우선 공유할 데이터(변수)를 Global변수로 선언하고 #Pragma data_seq을 다음과 같이 추가한다.
#pragam data_seg("SHAREDATA")
int g_nCount = 0;
char g_szText[12] = "hello world";
#pragma data_seg()
(2) 그런 다음 DLL프로젝트 내부에서 *.def파일에 아래에 내용을 추가한다 .
SECTIONS
SHAREDATA READ WRITE SHARED
2. 소스내에 정의하기
입력한 소스밑에 아래와 같이 정의한다.
// R : Read W : Write S : Shared
#pragma comment(linker, "/SECTION:.SHAREDATA, RWS")
// Global로 선언된 변수(공유데이터)를 리턴해 줄 함수 만들기
__declspec(dllexport) int* GetCountPointer()
{
return &g_nCount;
}
__declspec(dllexport) char* GetTextPointer()
{
return g_szText;
}