新手完美运行CocoStudio示例程序

静态链接的数据段共享问题。

— Begin quote from ____

引用第20楼东扬冬阳于2014-11-26 00:53发表的 回 19楼(燃烧吧-脂肪) 的帖子 :
静态链接的数据段共享问题。 http://www.cocoachina.com/bbs/job.php?action=topost&tid=163573&pid=1181933

— End quote

这个共享问题怎么解决了?请指导一下,谢谢

这个共享问题怎么解决了?请指导一下,谢谢

试试改成 动态链接的方式 链接BOX2D

或者替换下Box2D的两个文件。

我照着改的,只测试了windows下的,跑得通,没严格调试,明天再仔细看。

下载了的同学帮忙看下有没有问题。

— Begin quote from ____

引用第24楼东扬冬阳于2014-11-26 19:13发表的 :
或者替换下Box2D的两个文件。

我照着改的,只测试了windows下的,跑得通,没严格调试,明天再仔细看。

http://www.cocoachina.com/bbs/job.php?action=topost&tid=163573&pid=1183006

— End quote

替换了这两个文件,没有出现宕机现象。改为动态链接还没试,早上起来再试试吧。

再次请教一下,为什么这里会出现静态链接数据段不一致的现象了?看上去没有fork一个子进程,或者创建一个新的现场。放在数据段的数据为什么会出现这种问题了?

— Begin quote from ____

引用第24楼东扬冬阳于2014-11-26 19:13发表的 :
或者替换下Box2D的两个文件。

我照着改的,只测试了windows下的,跑得通,没严格调试,明天再仔细看。

http://www.cocoachina.com/bbs/job.php?action=topost&tid=163573&pid=1183006

— End quote

我也只测试了Windows下的,时能跑过的,同时看到s_blockSizeLookup的地址没有发生变化了。s_blockSizes得地址还是会有变化,但是在新地址中,数组中的内容和原地址中的内容还是一致的

数据段每份独立的二进制代码都有,全局变量、类的静态变量都放在数据段里头,估计这里是加载多次了,可能是另外的某个DLL和EXE都加载了一次。

— Begin quote from ____

引用第23楼东扬冬阳于2014-11-26 18:23发表的 回 21楼(燃烧吧-脂肪) 的帖子 :
试试改成 动态链接的方式 链接BOX2D http://www.cocoachina.com/bbs/job.php?action=topost&tid=163573&pid=1182970

— End quote

动态链接怎么改了?我做了尝试,都出错了,具体如下:

1,我修改 项目的 属性->配置属性->连接器->输入->附加依赖项,把libox2d.lib改为libox2d.dll。
错误:
3>libBox2d.dll : fatal error LNK1107: 文件无效或损坏: 无法在 0x2A8 处读取

2,修改 项目的 属性->配置属性->连接器->输入->附加依赖项,把libox2d.lib改为libox2d.dll;
修改libbox2d模块的 属性->配置属性->常规->配置类型, 由静态库(lib)改为动态库(dll)
错误:
2>libBox2d.dll : fatal error LNK1107: 文件无效或损坏: 无法在 0x2A8 处读取

3,修改 项目的 属性->配置属性->连接器->输入->附加依赖项,把libox2d.lib改为libox2d.dll;
修改libbox2d模块的 属性->配置属性->常规->配置类型, 由静态库(lib)改为动态库(dll)
修改libExtensions模块的 属性->配置属性->连接器->输入->附加依赖项,把libox2d.lib改为libox2d.dll;
错误:
6>LINK : fatal error LNK1104: 无法打开文件“libExtensions.lib”

= =
不好改,需要有导出函数才能生成lib文件。就照我那个写就行了。

— Begin quote from ____

引用第29楼东扬冬阳于2014-11-27 14:58发表的 回 28楼(燃烧吧-脂肪) 的帖子 :
= =
不好改,需要有导出函数才能生成lib文件。就照我那个写就行了。 http://www.cocoachina.com/bbs/job.php?action=topost&tid=163573&pid=1183805

— End quote

呃,这算不算是box2d的一个bug,或者cocos的一个bug了,对于引擎的使用者来说,遇到这类问题,查找root cause真的很头疼啊:6::6:我花了好长时间找是哪里导致了这个宕机,找到宕机原因后然后又花了很长时间研究为啥这个地址会被修改(虽然没有自己找出问题原因),想想都心碎啊:845::845::845:

不知道以后会不会修复这个?我用的是2.2.5版本

相信我,经过这次之后你的VC++调试技巧能有不少提升:882: