首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

利用DLLs实现应用程序间的数据传输 在VC 中怎么实现

2012-01-11 
利用DLLs实现应用程序间的数据传输 在VC 中如何实现?看了http://www.itepub.net/html/kaifawendang/C__/OL

利用DLLs实现应用程序间的数据传输 在VC 中如何实现?
看了http://www.itepub.net/html/kaifawendang/C__/OLE_COM_DLL_XML/2006/0429/7007.html   中关于   利用DLLs实现应用程序间的数据传输     的介绍,我用VC做了一个DLL,

可并没有得到服务器更新数据,客户机能读到更新数据的结果,能告诉我错哪了吗?

我的做法是,用VC6   的MFC   AppWizard(dll)   生成一个sample   Dll
    名称叫DataOperater

      DataOperater.h   中   在类的

HGLOBAL         hMem;         //全局变量
class   CDataOperaterApp   :   public   CWinApp
 
在DataOperater.cpp   的CDataOperaterApp   theApp;后面添加函数

CDataOperaterApp   theApp;
extern   "C "   _declspec(dllexport)   HGLOBAL     GetGlobalMem()
{
return   hMem;
}

在构造函数据中修改为
CDataOperaterApp::CDataOperaterApp()
{
//   TODO:   add   construction   code   here,
//   Place   all   significant   initialization   in   InitInstance
int   nSize;
nSize=1024;//定义10K的空间
hMem   =   GlobalAlloc(GMEM_MOVEABLE   |GMEM_DDESHARE   ,nSize);  
if   (hMem==0)  
{
AfxMessageBox(   "Could   not   allocate   memory ",MB_OK,NULL);
}

}


但是,分别用两个程序去调用这个DLL,一个向这个DLL写数据,另一个读数据,总发现读数据那并没有读取写数据那个程序所写的数据,这是为什么?不能通过这个DLL来传递数据吗?如何才能通过DLL来传递数据?

[解决办法]
:)
[解决办法]
你的数据(hMem = GlobalAlloc(GMEM_MOVEABLE |GMEM_DDESHARE ,nSize);)并不是所有DLL的实例共有的。而是独有的。

1.你可以采用内存映射。让所有DLL的实例共享同一块内存。
2.可以通过以下方式来实现
#pragma data_seg( ".cdkey ")
charg_CDKey[255] = {0};
#pragma data_seg()

#pragma comment (linker, "/SECTION:.cdkey,RWS ")

热点排行