| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 568 人关注过本帖
标题:关于动态库的问题?(开辟内存共享)
只看楼主 加入收藏
mana
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-8-20
收藏
 问题点数:0 回复次数:0 
关于动态库的问题?(开辟内存共享)
编译环境:vc6.0
请大家帮我看一下这个程序!!!!!!!!!!!!!!!!!!!!!!!
创建动态库:

//*********** main.h ****************************

SYSTYPE *Psys;
HANDLE hSA;
PVOID pSA;

typedef struct{
int a;
int b;
}SYSTYPE;

//************* com.h****************************
#ifdef COMAPI
#else
#define COMAPI extern "C" _declspec(dllimport)
#endif
COMAPI int INITPRO(int id, char *name);
COMAPI SYSTYPE *MAPSYS();

//************* com.cpp *************************
#define COMAPI extern "C" _declspec(dllexport)
#include <windows.h>
#include "main.h"
#include "com.h"
COMAPI int INITPRO()
{
extern SYSTYPE *Psys; //申明为外部变量
SYSTYPE *MAPSYS();

// Map to SYSCOM memory
if ((Psys = MAPSYS()) == NULL)
return 1;
return 0;
}

COMAPI extern SYSTYPE *MAPSYS()
{
extern SYSTYPE *Psys;
extern HANDLE hSA;
extern PVOID pSA;

//内存共享空间,自己做的函数,没问题
if ((pSA = openSA(1, hSA)) == NULL )
return NULL;
Psys = (SYSTYPE*)pSA;
return Psys;
}

//****************** main.cpp ************************
#inlcude "main.h"
#include "com.h"
#pragma comment(lib, "..\com\COM.lib")
int Errcode;
void main()
{
//Initialize the common share area
if( Errcode = INITPRO() )
{
return;
}

//出错的地方,得不到Psys的地址????????????
Psys->a = 1.0;
Psys->b = 2.0;
}

1.编译时这个程序能通过,可是执行main.exe文件时出错,调试时得不到Psys的地址空间,
请问这是什么问题?该这么解决?谢谢
2. 怎么通过动态库输出全局变量?

搜索更多相关主题的帖子: 内存 动态 动态 内存 
2007-09-06 17:39
快速回复:关于动态库的问题?(开辟内存共享)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018677 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved