我在ADll中进行隐式调用BDll,其中在调用B中函数时遇到这样的问题,如图左图是我要调用的函数pB->Contact(),里面第一个参数含有的值在下面,可以看到其半径的值,但调试到Contact这个函数实现部分时(Contact函数在BDll中),可以看到第一个参数p的值,其中半径值被放到m_AngleNew里了。
请问这是怎么回事?dll隐式调用 参数值传递

解决方案 »

  1.   

    dll中和你的exe中的头文件对CParticle的定义一致不.
      

  2.   

    你可以在dll中用sizeof来判断下这个类的大小,然后在exe也取一下,看看一致不,从你的现象看参数是没错的,地址是一样的,就是偏移量不对.
      

  3.   

    非常感谢您的提醒和帮助,我把所有的dll文件debug文件都删除,重新编译后再调试,发现这回偏移量正确了,非常感谢热心帮助。
    该死的VC6.0
      

  4.   

    楼上说的有道理。你再看看CSpheralParticle是不是包含了结构体?如果是,那么两个dll的结构对齐一样吗?有可能是对齐问题,仅供参考。