ALLJOYN WINDOWS下的一个天坑

问题

这个问题是这样出现,alljoyn的chat sample写得很简单,但是我移植到mfc application的时候就是出错

1
2
3
4
5
         /* Register signal handler */
        status  =  bus. RegisterSignalHandler ( this,
             static_cast <MessageReceiver :: SignalHandler > ( &ChatObject :: ChatSignalHandler ),
            chatSignalMember,
             NULL ) ;

以上一段代码,返回是结果是invalidate argument,但是问题是这个代码在原project当中,可是可以运行的啊。

过程
这个解决问题的过程实在是有很大的问题,有点漫无目的走,这个跟自己做事情有关系,就是做得不完美。
1)首先想到的是试试用console application,看看是不是有问题?结果一样存在
2)然后想着确保所有的visual studio 2012的选项都是一致的,结果还是一样存在(但是这一步是有问题的)
3)最后想着把alljoyn的源码拿到,自己编译,看看为毛同样的代码,我自己的sample调用就会出错,耗了1~2个小时搞定。
最后发现居然是产生的汇编代码都不一致。


00AEBC35 6A  00                 push         0  
00AEBC37 8B  45 EC              mov          eax , dword  ptr  [ this ]  
00AEBC3A 8B  48 1C              mov          ecx , dword  ptr  [ eax + 1Ch ]  
00AEBC3D  51                    push         ecx  
00AEBC3E  68 CE  95 AD  00        push         0AD95CEh  
00AEBC43 8B  55 EC              mov          edx , dword  ptr  [ this ]  
00AEBC46  52                    push         edx  
00AEBC47 8B 4D  08              mov          ecx , dword  ptr  [bus ]  
00AEBC4A E8 B9 FE FE FF        call        ajn ::BusAttachment ::RegisterSignalHandler  ( 0ADBB08h )

而自带的sample所产生的代码是:


00FD8B29 6A  00                 push         0  
00FD8B2B 8B  45 EC              mov          eax , dword  ptr  [ this ]  
00FD8B2E 8B  48 1C              mov          ecx , dword  ptr  [ eax + 1Ch ]  
00FD8B31  51                    push         ecx  
00FD8B32 8B  95  08 FF FF FF     mov          edx , dword  ptr  [ ebp - 0F8h ]  
00FD8B38  52                    push         edx  
00FD8B39 8B  85  04 FF FF FF     mov          eax , dword  ptr  [ ebp - 0FCh ]  
00FD8B3F  50                    push         eax  
00FD8B40 8B 4D EC              mov          ecx , dword  ptr  [ this ]  
00FD8B43  51                    push         ecx  
00FD8B44 8B 4D  08              mov          ecx , dword  ptr  [bus ]  
00FD8B47 E8  44  14  04  00        call        ajn ::BusAttachment ::RegisterSignalHandler  ( 01019F90h )  
00FD8B4C  89  45 E0              mov          dword  ptr  [status ] , eax

 最后总算发现了,验证compiler option一样的时候,忘记看那个addtional option了,然后addtional option当中使用了 mm  mg的选项,这两个选项导致了,
这种奇怪的4个参数,push 5个数据进去的情况。

总结
解决问题要抓住核心和本质,比如讲这个问题的核心就是两个版本一个版本行,另外一个版本不行,惟一的可能性就是编译选项的问题,比如讲我为何这么挫就是没有钱的原因。 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值