从dll返回的类对象在exe中具有不同的大小

  • 本文关键字:exe 返回 dll 对象 c++ dll
  • 更新时间 :
  • 英文 :


我的DLL和EXE都是在同一个VS2005中编译的,具有几乎相同的设置(一个解决方案中有两个项目(。EXE包含与DLL使用的头文件相同的头文件。

我尝试了两种方法来new一个在DLL中定义的对象。一种是直接在EXE中的new,另一种是调用DLL中的静态方法并使用返回的指针。两种方法都有相同的错误结果。

我检查了内存,发现起始地址是正确的,但在类的某个地方,EXE中的大小比DLL中的大。也就是说,DLL中返回的成员的地址类似于0x20000060,在EXE中分配该对象后,该地址变为0x20000064。

我的所有课程都使用_declspec(dllexport),BTW.

这是我能找到的唯一类似的问题,但我在DLL中没有使用任何内置类:

包含向量的结构大小<T>DLL和EXE 之间的大小不同

我不知道你需要什么信息来解决这个问题。所以只要你需要什么,我就会提供。

好吧,我刚刚发现了问题。

dll是由另一个人写的,他在下面写了一些东西

#ifdef _CUSTOM_DATA
#pragma pack(push, 1)
#endif

但在我的exe中,宏_CUSTOM_DATA没有定义,也没有从他的项目中继承。然后它会导致结构在编译后具有不同的地址。

最新更新