-
-
[讨论]DLL的内存变量共享问题
-
发表于:
2015-2-1 14:35
4077
-
用VC6写的DLL, 在Delphi7可以实现内存变量共享
// cDllShareMemory.cpp : Defines the entry point for the DLL application.
//
#include "stdafx.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
// 非共享内存数据
int LocalCount = 0;
// 共享内存数据
#pragma data_seg ("shared")
int GlobalCount = 0 ;
#pragma data_seg ()
#pragma comment(linker,"/SECTION:shared,RWS")
#define DLLAPI extern "C" _declspec(dllexport)
//导出函数 非共享内存数据
DLLAPI int GetLocal(void)
{
return LocalCount++;
}
//导出函数 共享内存数据
DLLAPI int GetGlobal(void)
{
return GlobalCount++;
}
/*
//delphi7调用代码
function GetLocal(): integer; stdcall; external 'cDllShareMemory.dll' name 'GetLocal';
function GetGlobal(): integer; stdcall; external 'cDllShareMemory.dll' name 'GetGlobal';
procedure TForm1.Button2Click(Sender: TObject);
begin
form1.Memo1.Lines.add('Local='+inttostr(GetLocal)+' Global='+inttostr(GetGlobal));
end;
*/
但不知道这个DLL用Delphi7要怎么写
网上找到的方法一般都用CreateFileMapping来实现
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!