Мне передали библиотеку, которая была разработана в доме как обертка для БИТОВ. Мне сказали, что если вы хотите переключиться между 64-битной и 32-битной сборками, вам нужно поменять местами эти две прокомментированные строки.
[StructLayout(LayoutKind.Explicit, Size = 8, Pack = 4)] //32 bit address
internal struct BG_BASIC_CREDENTIALS
{
[FieldOffset(0)]
[MarshalAs(UnmanagedType.LPWStr)]
public string UserName;
[FieldOffset(4)]
[MarshalAs(UnmanagedType.LPWStr)]
public string Password;
}
//[StructLayout(LayoutKind.Explicit, Size = 16, Pack = 8)] //64 bit address
//internal struct BG_BASIC_CREDENTIALS
//{
// [FieldOffset(0)]
// [MarshalAs(UnmanagedType.LPWStr)]
// public string UserName;
// [FieldOffset(8)]
// [MarshalAs(UnmanagedType.LPWStr)]
// public string Password;
//}
Это просто не подходит мне, был человек, которому я получил это от правильных действий (этот код развернут как на 32, так и на 64 машинах с использованием трюка с измененными комментариями, поэтому я знаю, что он работает) Если это то, что нужно сделать, есть ли способ сделать это, чтобы не нужно было корректировать комментарий каждый раз, когда выполняется 32- или 64-битная сборка? (или способ сделать эту целевую ЦП dll полностью совместимой)
Ссылка на MSDN типа данных