2016-11-22 8 views
0

У меня возникла ситуация, когда мне нужно приложение для поддержки 3-го варианта платформы.VisualStudio- Пользовательская платформа

X86 & X64 уже используется, поэтому то, что я ищу, - это добавить новую настраиваемую платформу, когда я выберу эту платформу - соответственно изменится файл dll.

Моя цель состоит в том, чтобы добавить новое условие в файле проекта, что-то вроде этого:

<Reference Include="newCustomPlatform" Condition="'$(Platform)'=='newCustomPlatform'"> 
     <HintPath>..\..\_libBinary\87\newCustomPlatform.dll</HintPath> 
    </Reference> 

Я искал ответ на это, но я только нашел x86 или x64 связанных ответов.

Можно ли это сделать?

ответ

1

Visual Studio не поддерживает произвольные пользовательские платформы. Он поддерживает только определенный набор поддерживаемых целевых платформ. В общем случае это x86 (IA-32) и x86-64 (AMD64). Если у вас есть необходимые инструменты сборки, вы также можете получить поддержку Itanium или ARM. Исторические версии поддерживали Alpha и PowerPC и, возможно, несколько других архитектур, которые я забываю.

Ничто из этого не поможет, конечно. Если вы в конечном итоге хотите создать 32-битный x86 или 64-битный двоичный код x86, вы абсолютно должны использовать одну из этих двух платформ.

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

Помимо этого, может быть, я слишком много читаю в вашем примере, но 87 предполагает, что вы пытаетесь создать платформу, ограничивающую набор команд x87, без использования наборов инструкций SSE или более новых? Если это так, это настраивается с помощью компилятора /arch. /arch:IA32 ограничивает набор инструкций x87; /arch:SSE2 по умолчанию, и делает то, что он говорит. Другие варианты включают /arch:SSE, /arch:AVX и /arch:AVX2. Эти параметры влияют на определения некоторых предопределенных макросов. Если поддерживается AVX, будет определено значение __AVX__. Если поддерживается AVX2, будет определен __AVX2__. В противном случае вам нужно будет проверить значение символа _M_IX86_FP: оно будет 0, если используется /arch:IA32, 1, если используется /arch:SSE, или 2 для /arch:SSE2 и выше. Вы можете проверить значения этих символов и условно указать компоновщик на необходимые библиотеки; что-то вроде:

#if (defined _M_IX86) 
    #if (defined __AVX2__) 
     #pragma comment(lib, "bin\avx2\MyData.lib") 
    #elif (defined __AVX__) 
     #pragma comment(lib, "bin\avx\MyData.lib") 
    #elif (_M_IX86_FP == 2) 
     #pragma comment(lib, "bin\sse2\MyData.lib") 
    #elif (_M_IX86_FP == 1) 
     #pragma comment(lib, "bin\sse\MyData.lib") 
    #else 
     #pragma comment(lib, "bin\87\MyData.lib") 
#endif 
+0

спасибо - 87 не x87, это просто версия моего продукта. то, что я закончил делать, это что-то вроде этого [ссылка] (http://stackoverflow.com/questions/533554/how-to-use-different-files-in-a-project-for-different-build-configurations- VIS). например, я добавил новое «имя», которое я могу установить в процессе сборки ms. –

 Смежные вопросы

  • Нет связанных вопросов^_^