游戏开发论坛

 找回密码
 立即注册
搜索
查看: 10333|回复: 40

Lib中的static变量怎么会对外不可见

[复制链接]

78

主题

194

帖子

194

积分

注册会员

Rank: 2

积分
194
发表于 2004-9-6 15:32:00 | 显示全部楼层 |阅读模式
我写了一个DLL,里面有一个类,它有一个static成员,这个类已经申明为dllexport。然后我又写了一个app,它依赖于刚才的DLL,使用到那个static成员的时候,却在link时被告知未知符号。在DLl的工程里使用那个变量是可以的。这是怎么一回事呢,static变量没有理由不能导出,我怎么也搞不清楚,请各路大虾解答一下。 [em13]

28

主题

685

帖子

703

积分

高级会员

Rank: 4

积分
703
发表于 2004-9-6 15:35:00 | 显示全部楼层

反正我的可以。

rt

33

主题

445

帖子

446

积分

中级会员

Rank: 3Rank: 3

积分
446
发表于 2004-9-6 16:56:00 | 显示全部楼层

Re:Lib中的static变量怎么会对外不可见

static 变量 只在那个文件内可见, 外文件不可见。

68

主题

710

帖子

719

积分

高级会员

Rank: 4

积分
719
QQ
发表于 2004-9-6 18:11:00 | 显示全部楼层

Re:Lib中的static变量怎么会对外不可见

用别的方法实现

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-9-6 19:28:00 | 显示全部楼层

Re:Lib中的static变量怎么会对外不可见

你有没有给 static 成员变量赋值啊?

10

主题

314

帖子

314

积分

中级会员

Rank: 3Rank: 3

积分
314
QQ
发表于 2004-9-6 20:27:00 | 显示全部楼层

Re:Lib中的static变量怎么会对外不可见

你有没有在程序中改变这个值啊。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2004-9-7 12:56:00 | 显示全部楼层

Re:Lib中的static变量怎么会对外不可见

你的app的问题,你是怎么调用static成员的?

78

主题

194

帖子

194

积分

注册会员

Rank: 2

积分
194
 楼主| 发表于 2004-9-7 15:49:00 | 显示全部楼层

Re:Lib中的static变量怎么会对外不可见

类的static变量和全局变量应该是等价的吧,不是只在文件里可见的。我也说明过了,只是在调用这个库时,才有link错误,库link是正确的。另外具体说一下吧,原本工作正常的Singlton类,因为采用了继承的方式,深怕效率不该,于是就改成了宏定义,结果就遇到刚才说的那个问题了。static成员的申明和定义都写了,我想不出什么地方有问题,猜测和编译选项有关

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-9-7 19:31:00 | 显示全部楼层

Re:Lib中的static变量怎么会对外不可见

宏是编译期技术,是不能导出的。

59

主题

1104

帖子

1199

积分

金牌会员

Rank: 6Rank: 6

积分
1199
发表于 2004-9-7 19:57:00 | 显示全部楼层

Re:Lib中的static变量怎么会对外不可见

你是用的类似:
(class::GetInstance())这样的东西来访问的吧。

不知道你能不能把具体的声明代码贴出来呢?
是类似这样的声明?
static xxxx *xxxx::GetInstance() { return m_Instance; }
没有其他的东西了吧?类似APIENTRY之类的?
你又是怎么用的呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-18 17:34

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表