如何从dll中到处变量?书上写的寥寥几句,没太看懂,谢谢!!
想来应该是用
__declspec(dllexport)
__declspec(dllimport)
但是不知该怎么用,试了几次都不好用,谁来帮帮帮忙。
问题点数:100、回复次数:16Top
1 楼xiaoc(xiaoc)回复于 2002-04-03 17:07:58 得分 0
是导出,写错了,不好意思Top
2 楼xiaoc(xiaoc)回复于 2002-04-03 17:12:08 得分 0
呵呵,写错了,是导出变量Top
3 楼xiaoc(xiaoc)回复于 2002-04-03 17:14:09 得分 0
呵呵,写错了,是导出变量Top
4 楼webber84(***闭关修炼中***)回复于 2002-04-03 17:20:36 得分 0
这样写你的DLL头文件:
# ifdefine DLL_EXPORT
# define MYDLL __declspec(dllexprot)
# else
# define MYDLL __declspec(dllimport)
# endif
MYDLL double n; //输出n
MYDLL //other virables
在你的DLL的CPP文件的最前面加上# define DLL_EXPORT。然后把DLL头文件,lib文件加入
到你的工程中就可以了。(工程中不要定义DLL_EXPORT)
Top
5 楼xiaoc(xiaoc)回复于 2002-04-03 17:31:30 得分 0
能不能不用lib,我是直接LoadLibrary动态链接库文件的Top
6 楼2ndboy(贱男春)回复于 2002-04-03 17:36:22 得分 0
好象不行Top
7 楼Meathead(阿森)回复于 2002-04-03 17:36:22 得分 10
换另种方式动态加载DLL.
定义全局函数,
并函数名写在.def中EXPORTS后
每行写一个函数名
exp:
//.def
EXPORTS
C_CreateManager
//声明
HANDLE C_CreateManager();
//函数体
HANDLE C_CreateManager()
{
//....
return NULL;
}
在需要用的地方
先把函数
typedef HANDLE (*S_CreateManager)();
S_CreateManager m_pCreateManager;
//加载
m_hDllInst = ::LoadLibrary(*.DLL);
m_pCreateManager= (S_CreateManager)GetProcAddress(m_hDllInst, "C_CreateManager");
然后就可以象一般的函数用了.
别忘了头文件的引用哦.
用完后也要卸载哦.
Top
8 楼webber84(***闭关修炼中***)回复于 2002-04-03 17:36:57 得分 50
那你可以用一个函数,专门返回这个变量。Top
9 楼Meathead(阿森)回复于 2002-04-03 17:39:44 得分 0
是导出变量可考虑用参数的方法,那样比较安全.
Top
10 楼xiaoc(xiaoc)回复于 2002-04-03 17:52:47 得分 0
呵呵,好象的返值比较和我的胃口
我看了一些资料,给我感觉似乎写def文件的方法比较老,过时了,是这样吗?Top
11 楼xiaoc(xiaoc)回复于 2002-04-03 17:54:35 得分 0
__declspec(dllexport) int totallen;
__declspec(dllexport) struct IPAddr *psourip,*pdestip;
__declspec(dllexport) WORD sourport,destport;
__declspec(dllexport) BYTE *pdata;
书上这样做,我试了不好用Top
12 楼scxy(小熊)回复于 2002-04-05 09:03:36 得分 0
dddTop
13 楼2ndboy(贱男春)回复于 2002-04-05 12:13:42 得分 20
用一个导出函数来返回变量值吧,Winamp的插件就是这么做的Top
14 楼zyj_vc(zyj)回复于 2002-04-05 12:27:35 得分 20
用GetProcAddress就可以了,当然先还是要用__declspec(dllexport)先定义。注意在不同的进程中,dll中的全局变量有各自的储存地址,如果要在不同进程中用到同一个全局变量,就要用共享数据段。Top
15 楼xiaoc(xiaoc)回复于 2002-04-08 17:48:59 得分 0
zyj_vc的说法我很感兴趣,等我试好用了一定给分Top
16 楼xiaoc(xiaoc)回复于 2002-04-14 17:33:29 得分 0
结帖,
这几天有些事,没时间试验zyj_vc的说法了,就当是好用了,呵呵,谢谢大家Top
17 楼xiaoc(xiaoc)回复于 2002-04-14 17:36:49 得分 0
结帖,
这几天有些事,没时间试验zyj_vc的说法了,就当是好用了,呵呵,谢谢大家Top




