DLL 共享数据学习
来源:互联网 发布:centos 安装apache2 编辑:程序博客网 时间:2024/04/29 08:46
要想在DLL共享数据,必须重新定义一个共享段,然后用函数去修改添加
DLL代码:
#include "stdafx.h"#pragma data_seg("MyData") //定义一个共享段int name=10;#pragma data_seg#pragma comment(linker,"/section:MyData,rws")extern "C" _declspec(dllexport) int add(void) //用函数去操作它{return name*5;}extern "C" _declspec(dllexport) int letdown(void){name = name - 1;return name*5;}BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ){switch (ul_reason_for_call){case DLL_PROCESS_ATTACH:MessageBox(NULL,"DLL载入","OK",NULL);break;case DLL_PROCESS_DETACH:MessageBox(NULL,"DLL卸载","OK",NULL);break;} return TRUE;
应用程序1)
#include "stdafx.h"#include <windows.h>#include <process.h>int main(int argc, char* argv[]){char str[] = "C:\\Documents and Settings\\Administrator\\桌面\\test\\Dlltest.dll";FARPROC procaddress = GetProcAddress(LoadLibraryA(str),"letdown");int recv = procaddress();printf("name = %d\n",recv);system("pause");return 0;}应用程序2)
#include "stdafx.h"#include <windows.h>#include <process.h>int main(int argc, char* argv[]){FARPROC procaddress = GetProcAddress(LoadLibraryA("Dlltest.dll"),"add");int recv = procaddress();printf("name = %d\n",recv);system("pause");return 0;}
效果:
先用 程序1 改变了 name值 运行后 输出9*5
然后程序2运行 如果是共享内存的话 还是输出9*5 共享成功
但如果 没有设置 #pragma data_seg 的话 每个EXE调用的DLL 都是独立的
- DLL 共享数据学习
- DLL共享数据方法
- DLL共享数据段
- 共享DLL中的数据
- DLL 中的共享数据
- dll中共享数据
- dll共享数据
- DLL共享数据段
- DLL共享数据
- 进程共享同一个DLL数据
- DLL实现数据内存共享
- DLL内存映像共享数据
- DLL共享数据段,实现多进程数据共享总结
- DLL共享数据段,实现多进程数据共享总结
- DLL之共享数据段(转)
- 多个程序dll共享数据
- DLL在应用程序间共享数据
- 使用DLL在进程间共享数据
- POJ 1753 Flip Game DFS枚举
- java反射机制
- Ruby学习笔记之标准库
- 我的程序人生路——雷军(1)
- Class Loader
- DLL 共享数据学习
- Android------横屏显示
- 看到大神移植系统了,我来整理下市面上的系统...
- linux loglevel
- c#通过标签读取word段落表格(解析无法操作读取的真正原因)
- ECLIPSE找不到插件的解决方法
- PHP 常用函数总结分享
- 我的程序人生路——雷军(2)
- C#中的委托和事件(续)