Delphi, ALIGN в сгенерированных файлах TLB - PullRequest
0 голосов
/ 02 апреля 2020

Поиск ошибок в 64-битном приложении показал, что все файлы TLB, сгенерированные Delphi для доступа к библиотекам ActiveX (например, ActiveDs или SpeechLib), имеют множество директив {$ALIGN...} и, в частности, {$ALIGN 4}, что явно делает запрограммируйте на sh, если это 64-битное приложение. С другой стороны, Windows SDK-файлы, обеспечивающие такой же доступ c ++, не содержат слова "align". Это ошибка Delph, и я должен заменить все эти директивы, или я что-то упустил, и я должен как-то обработать их должным образом? Вот код из обёртки ActiveDs_TLB, где он действительно имеет значение (фактическое значение dwNumValues можно найти в hReserved месте в 64-битном приложении):

type
    {$ALIGN 4}
  __MIDL___MIDL_itf_ads_0000_0000_0001 = TOleEnum;
...
    ADSTYPEENUM = __MIDL___MIDL_itf_ads_0000_0000_0001; 
...
    {$ALIGN 4}
      ads_search_column = record
        pszAttrName: PWideChar;
        dwADsType: ADSTYPEENUM;
        pADsValues: ^_adsvalue;
        dwNumValues: LongWord;
        hReserved: Pointer;
      end;
...