私は2つのモジュールを持っています。 1つは他の1つを呼び出し、引数として構造体を渡します。引数としてポインタをスレーブDLLに渡すオブジェクトのサイズが間違っています
struct {
char* szDGRTag;
bool bTagEx;
} ADPTAG;
マスターは、Visual C++ 6.0で'98からC++で書かれています。スレーブはVisual Studio 2010 ProfessionalのC++ 11で書かれています。スレーブで呼び出され
機能:マスターで
long lCheckPresenceOfFields (char* szName, ADPTAG* AdpTagList, long lNbVar)
:
long lNbVar = 2;
ADPTAG* AdpTagList = NULL;
AdpTagList = new ADPTAG[lNbVar];
AdpTagList[0].szTag = new char[32];
AdpTagList[0].bTagEx = true;
memset(AdpTagList[0].szTag, 0x0, 32+1);
AdpTagList[0].szTag = NULL;
AdpTagList[1].szTag = new char[32];
AdpTagList[1].bTagEx = true;
memset(AdpTagList[1].szTag, 0x0, 32+1);
AdpTagList[1].szTag = NULL;
int size = sizeof(AdpTagList[0]);
AdpTagList[0].szTag = "DDD";
AdpTagList[1].szTag = "AAA";
long pres = pGetFieldsPresence(szPath, AdpTagList, 2);
私はマスターにAdpTagListのサイズ[0]を確認したのだが、5つのバイトだったが、スレーブにそれが8であります最初のオブジェクトはOKですが、ポインタが間違ったメモリ領域を指しているため、次のオブジェクトは不良です。
ここで問題になるのは何ですか?別のコンパイラ?おそらく、char *とintのみの構造体はこれら2つのモジュール間でうまく動作しません。
第1オブジェクト[0]のサイズにかかわらず、第2 [1]はヌルポインタです。
[sizeof(bool)は定義されていますか?](http://stackoverflow.com/questions/4897844/is-sizeofbool-defined) – GSerg
これはどのように役立ちますか?両方のモジュールのboolのsizeofが1、両方のモジュールのchar *のサイズが4です。vc6のオブジェクトのサイズは5で、vs2010のサイズは8 –
です。次に、.hファイルで定義されている異なるパディングでなければなりません。 – GSerg