Поиск ошибок в 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;