游戏开发论坛

 找回密码
 立即注册
搜索
12
返回列表 发新帖
楼主: skice

net_sky在不在?帮人帮到底啊!

[复制链接]

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2004-1-26 16:53:00 | 显示全部楼层

Re: net_sky在不在?帮人帮到底啊!

补充一句:

如dancer所说,类的成员都会mangling的,加了extern "c"也没用的。

62

主题

296

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
QQ
 楼主| 发表于 2004-1-26 19:17:00 | 显示全部楼层

Re:net_sky在不在?帮人帮到底啊!

Grand, Super, Extreme ...... thanks to hmhm.

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2004-1-26 19:29:00 | 显示全部楼层

Re: Re:net_sky在不在?帮人帮到底啊!

skice: Re:net_sky在不在?帮人帮到底啊!

Grand, Super, Extreme ...... thanks to hmhm.



一个可能的隐患:

如果你用返回的指针来正常访问类的数据成员,然后向类中添加了新的数据成员,如不重新编绎调用DLL的程序的话,有可能出现错误的结果原因是类的内存布局的改变,导致调用程序所使用的数据结构偏移是错误的,从而访问到错误的数据(没有验证)。

62

主题

296

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
QQ
 楼主| 发表于 2004-1-26 19:58:00 | 显示全部楼层

Re:net_sky在不在?帮人帮到底啊!

不好意思,又麻烦您了:)
按照你的方法,我已经成功导出了class。
能不能导出template class?我试了一下,编译dll没有问题,在主程序中调用时就总出现unresolved。是不是导出template class要求太高了些?

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2004-1-26 20:14:00 | 显示全部楼层

Re: Re:net_sky在不在?帮人帮到底啊!

skice: Re:net_sky在不在?帮人帮到底啊!

不好意思,又麻烦您了:)
按照你的方法,我已经成功导出了class。
能不能导出template class?我试了一下...


呵呵,由于我平时都不大用STL,所以对TEMPLATE没什么研究,不过看你的情况,是否有把TEMPLATE的定义和声明放在同一个头文件里,因为编绎器成生TEMPLATE的代码时,不光需要声明,也需要定义。由于我没有做过从DLL中导出TEMPLATE类,所以我也只能猜想是这个原因了,如果帮不上忙的话,也只怪我能力有限了。。。。。。。

30

主题

298

帖子

299

积分

中级会员

Rank: 3Rank: 3

积分
299
QQ
发表于 2004-1-26 20:29:00 | 显示全部楼层

Re: Re: Re:net_sky在不在?帮人帮到底啊!

hmhm: Re: Re:net_sky在不在?帮人帮到底啊!



呵呵,由于我平时都不大用STL,所以对TEMPLATE没什么研究,不过看你的情况,是否有把TEMPLATE的定义和声...


想了想我上面所说的原因,生成TEMPLATE代码需要声明和定义,而如果你又在头文件中提供了声明和定义,结果就是根本不需要从DLL中导出TEMPLATE类了。所以,基于这个原因,我想从DLL中导出TEMPLATE,在目前来说是不可行的(编译器的原因?),我也没有见到过导出TEMPLATE的DLL,如果你现实了,请告诉我一声。

e-mail:hhsonline@163.com

62

主题

296

帖子

302

积分

中级会员

Rank: 3Rank: 3

积分
302
QQ
 楼主| 发表于 2004-1-27 09:48:00 | 显示全部楼层

Re:net_sky在不在?帮人帮到底啊!

我也觉得导出template类理论上是不可行的。template需要在主程序中看调用情况生成代码,而dll已经把代码全都编译、封装了,所以不太可能还能在主程序中再次生成。
果然导出template要求太高,算了,有空再联系!多谢帮忙!

36

主题

1047

帖子

1147

积分

金牌会员

Rank: 6Rank: 6

积分
1147
发表于 2004-1-29 03:21:00 | 显示全部楼层

Re:net_sky在不在?帮人帮到底啊!

template 是编译期间决定的,不是运行时决定的,从这方面讲是绝不可能的。不过你能想到导出 template 类这个想法倒是挺难得的。:)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-2-25 00:06

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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