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

输入有关问题?主程序与所要调用的dll怎么互相调用数据?

2012-02-13 
输入问题?主程序与所要调用的dll如何互相调用数据???本人做了一个主程序(exe文件),现调用一dll(没什么问题

输入问题?主程序与所要调用的dll如何互相调用数据???
本人做了一个主程序(exe文件),现调用一dll(没什么问题),但是不知道如何能够实现dll与exe互相调用数据。个人觉得应该写一些共有接口函数,但又不知道如何写。其实这个问题类似于:AutoCAD提供二次开发,他其实就是AutoCAD调用一个dll(Arx编写),然后他们就能很好的知道共同的数据。麻烦高手指点,在线等!

[解决办法]
1) 公享数据段

2) File Mapping (推荐)

3) Socket
[解决办法]
HANDLE hFile = CreateFile( "c:\\octopus.txt ",GENERIC_READ|GENERIC_WRITE,
FILE_SHARE_READ|FILE_SHARE_WRITE,
NULL,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);
cout < < "Last Error Code: " < <GetLastError() < <endl;
if(hFile!=INVALID_HANDLE_VALUE)
{
MessageBox(NULL, "CreateFunction OK! ", "error! ",MB_OK);
}
cout < < "error code: " < <GetLastError() < <endl;
HANDLE hFileMap = CreateFileMapping(hFile,NULL,PAGE_READWRITE,0,100,NULL);
cout < < "Last Error Code: " < <GetLastError() < <endl;
BYTE *pbFile,somebyte;
pbFile = (PBYTE)MapViewOfFile(hFileMap,FILE_MAP_WRITE,0,0,0);
pbFile[0] = 97;
pbFile[1] = 65;
somebyte = pbFile[0];
cout < < "somebyte " < <somebyte < <endl;

CloseHandle(hFileMap);
CloseHandle(hFile);
这个是FileMapping的简单代码,不知道对你有没有用,还是贴上来吧,不过如果楼主要用FileMapping最好把Win32帮助文档好好看看,要不然可能会有很多非常奇怪的错误.
[解决办法]
MSND上就有一个简单的例子的.同一台机器上不同进程之间的数据同步都是基于内存映射文件来实现的,建议用这个.
[解决办法]
socket???? 真是杀鸡用牛到

pipe,clipboard, filemapping, named pipe, mailslot 那个都比socket方便

热点排行