Чтобы компилятор / фреймворк выполняли большую часть работы, вам нужно, чтобы
- имели несколько сборочных «платформ» (обычно x86, x64 - удаляют AnyCPU)
- устанавливайте каждыйКонфигурация «целевой платформы» для каждой конфигурации сборки
- мы добавили условные символы компиляции __WIN32 и __X64
Перечислите различные реализации для ваших функций в зависимости от платформы, включая различные имена DLL, если вам нужночтобы оба были установлены одновременно.
#if __WIN32
public delegate int Move(int target);
[DllImport("my.dll", SetLastError = true, CharSet = CharSet.Auto)]
#elif __X64
public delegate int Move(int target);
[DllImport("my64.dll", SetLastError = true, CharSet = CharSet.Auto)]
#endif
В противном случае вы можете использовать loadlib и управлять сборкой самостоятельно.