Директива препроцессора в C # для импорта на платформе

Поиск директивы препроцессора в c # для импорта dll в зависимости от того, является ли исполняемый файл 64-битным или 32-битным:

#if WIN64 [DllImport("ZLIB64.dll", CallingConvention=CallingConvention.Cdecl)] #else [DllImport("ZLIB32.dll", CallingConvention=CallingConvention.Cdecl)] 

Вот что вам нужно сделать.

Сначала перейдите в Project-> Properties... и перейдите на вкладку Build.

Там, в текстовом поле с надписью «Условные символы компиляции», добавьте WIN32 для вашей платформы x86 (выбирается в верхней части диалогового windows) и WIN64 для вашей платформы x64. Затем сохраните.

Обратите внимание, что если у вас есть один для «AnyCPU», вы, вероятно, захотите полностью удалить эту платформу, так как это будет небезопасно.

Затем зайдите в источник и напишите:

 #if WIN64 [DllImport("ZLIB64.dll", CallingConvention=CallingConvention.Cdecl)] #else [DllImport("ZLIB32.dll", CallingConvention=CallingConvention.Cdecl)] #endif 

Обратите внимание, что при просмотре источника одна из строк будет выглядеть так, как будто она была закомментирована, так как вся строка имеет серый шрифт. Эта линия является одной для «другой платформы». Если вы выберете платформу на панели инструментов, вы заметите, что раскраска синтаксиса следует примеру.

Конечно, после повторного чтения моего ответа я замечаю, что на самом деле вам не нужно помещать WIN32 в список условных символов, поскольку он не используется, но может быть полезно использовать другие места для #if для WIN32 вместо 64 ,

Вам нужно будет добавить условный символ компиляции для каждой целевой платформы в свойствах вашего проекта на вкладке «Сборка». Просто добавьте символ для данной платформы, как описано в раскрывающемся списке «Платформа» в верхней части формы «Сборка». Изменение платформы позволит вам добавлять разные символы, которые применяются только к сборке для этой платформы.

Я ничего не знаю. Тем не менее, просто определить пользовательскую константу компиляции. Если вы используете Visual Studio, создайте разные конфигурации сборки для 32-битной и 64-разрядной версий с помощью Configuration Manager. Затем откройте свойства проекта и перейдите на вкладку «Сборка» и введите описательное имя в текстовое поле условных компиляций для каждой конфигурации сборки. Затем вы можете ссылаться на константы компиляции в коде.

  • Перегрузка операторов доступа членов ->,. * (C ++)
  • C # как зарегистрировать сборку в GAC без GacUtil?
  • Можно ли использовать сигнал внутри classа C ++?
  • Почему аргумент типа карты C ++ требует пустого конструктора при использовании ?
  • Double.TryParse или Convert.ToDouble - что быстрее и безопаснее?
  • Коллекция была изменена; операция enums может не выполняться
  • В чем разница между именами WIN32 и _WIN32 в C ++
  • Скопируйте значения карт в вектор в STL
  • Существует ли какая-либо «стандартная» хтоноподобная функция для 64-битных целых чисел в C ++?
  • Преимущества списков инициализации
  • cout не печатает символ без знака
  • Interesting Posts

    Запуск эмулятора Android быстрее

    Войдите в систему с другой оболочкой, когда исходная оболочка «сломана»

    Обратный вызов ошибки JQuery ajax

    Обложки iPhone для iPhone UITextField

    Установка сетевого тайм-аута для подключения JDBC

    Я хочу, чтобы виртуализировать свою рабочую станцию ​​(уровень 1), искать гипервизор Bare Metal для компонентов потребительского класса

    Использование pipe для передачи целочисленных значений между родительским и дочерним

    Почему неподписанное целочисленное переполнение определенного поведения, но недопустимое целочисленное число целых чисел?

    Как вы можете отлаживать запрос CORS с помощью cURL?

    Как сделать округленные проценты составляют до 100%

    Как переопределить невидимую функцию в пространстве имен пакетов?

    Как настроить доменное имя хоста в IRC?

    Является ли атрибут CallerMemberName в 4.5 “способным подделаться”?

    Почему IP-адрес указан как 172.18.0.150/24?

    В C # в какой категории двоеточие «:» попадает и что это значит?

    Давайте будем гением компьютера.