zoukankan      html  css  js  c++  java
  • DLL 共享数据学习

    要想在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
    ",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
    ",recv);
    	system("pause");
    
    
    	return 0;
    }

    效果:

    先用 程序1  改变了 name值 运行后  输出9*5

    然后程序2运行 如果是共享内存的话  还是输出9*5  共享成功


    但如果 没有设置  #pragma data_seg 的话   每个EXE调用的DLL  都是独立的











  • 相关阅读:
    python中普通函数调用协程
    python骚操作之内建方法的使用
    Python常量类
    python实用技巧之任务切分
    容易被忽视的python装饰器的特性
    C语言学习笔记
    python mongo存在插入不存在更新,同时指定如果不存在才插入的字段
    python使用ThreadPoolExecutor每秒并发5个
    mac使用crawlab
    线性表的顺序存储结构
  • 原文地址:https://www.cnblogs.com/zcc1414/p/3982444.html
Copyright © 2011-2022 走看看