关于VC和BCB对结构体指针参数处理
最近我用VC编写了一个Win32的动态库,输出函数的参数是结构体指针,我又使用VC作了一个测试程序,测试这个输出函数,没有问题,接着,我利用BCB工具生成这个动态库的.lib和.def文件,又使用BCB做了一个测试程序,还是调用这个函数,但是得出结果却是错误的,我怀疑VC和BCB处理这个结构体指针过程中有区别,但又不清楚是怎么回事,请指点。
[解决办法]
如果有enum的话,VC默认是用int型的,BCB要在工程属性里设置Treat enum types as ints
还有就是字节对齐是否一致,最好大家都用紧凑格式
最好是把你的结构体写出来看看.
[解决办法]
就像上面说的几个注意点:
1.调用方式的区别 __stdcall __fastcall __cdecl是不同的,BC和VC中的__fastcall还不同。
2.结构的字节对齐问题,最好在头文件明确指定,别被编译器默认设置覆盖了。
3.结构中的成员最好都使用4字节类型,如指针等。