主程序与DLL之间的全局变量问题

简介: 有几个朋友经常向我问题在DLL中怎么共用一个全局变量。比如像用户登陆后的用户名(UserName)...其实这个问题很简单。下面我把我的做法写出来大家一起分享。把共享的变量放在主程序里:UserName,.
有几个朋友经常向我问题在DLL中怎么共用一个全局变量。比如像用户登陆后的用户名(UserName)...
其实这个问题很简单。下面我把我的做法写出来大家一起分享。

把共享的变量放在主程序里:UserName,....等等,
在主程序里写两个函数
Function CurUserName():PChar;
begin
 Result:=pchar(UserName);
end;

procedure SetCurUserName(LoginUserName: PChar)
begin
 UserName:=LoginUserName; 
end;

然后在主程序的工程文件(*.dpr)里输出这两个函数里写
.....
{$R *.res}

exports
  CurUserName, SetCurUserName;
....

这样在每个DLL里就可以使用这两个函数了

function CurUserName: PChar; //从主程序里获取当前登陆帐号
var
  GetCurUserName: function: pchar;
begin
  @GetCurUserName := GetProcAddress(GetModuleHandle(pchar(application.Exename)), 'CurUserName');
  if Assigned(GetCurUserName) then //找到
    result := GetCurUserName
  else
    result := 'admin';
end;
目录
相关文章
|
8月前
|
安全 Unix 编译器
LabVIEW外部代码调用CIN/DLL
LabVIEW外部代码调用CIN/DLL
127 1
|
6月前
|
安全 数据处理 C++
LabVIEW调用外部DLL(动态链接库)
LabVIEW调用外部DLL(动态链接库)
39 0
|
网络协议 C# C++
关于 C#调用一个C/C++dll库运行时实现多个应用(静态变量区分) 的解决方法
关于 C#调用一个C/C++dll库运行时实现多个应用(静态变量区分) 的解决方法
关于 C#调用一个C/C++dll库运行时实现多个应用(静态变量区分) 的解决方法
|
存储 SQL Java
通过DLL文件实现函数共有及通过调用_stdcall来减少程序文件的大小
通过DLL文件实现函数共有及通过调用_stdcall来减少程序文件的大小
81 0
|
C++
使用dumpbin查看dll有哪些函数
使用dumpbin查看dll有哪些函数
149 0
|
C++
C++ 操作DLL的函数 Loadlibrary GetProcAddress FreeLibrary
C++ 操作DLL的函数 Loadlibrary GetProcAddress FreeLibrary
812 0
MFC创建动态链接库DLL并调用方法详解
实例一: 1、创建一个动态链接库工程,如login_dll。 2、在原工程头文件或者新建头文件如showdlg.h定义动态链接库的导出函数,代码如下: #include "stdafx.h"#define EXPORT __declspec(dllexport)extern "C"  EXPO...
3657 0