Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Борьба с _WIN32_WINNT. / 18 сообщений из 18, страница 1 из 1
29.10.2007, 14:26:09
    #34901645
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
Пришлось опять кроссплатформить на буржуйсткую ось...

Возник вопрос. Под сабжевой диретивой сидит функция, которая мне нужна. Пробовал создаватьс в msvc8 разные типы приложений, даже с precompiled headers. По фигу - директива не появляется. Посмотрел в инете советуют так:

Код: plaintext
1.
2.
3.
#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP or later.
#define _WIN32_WINNT 0x0501 // Change this to the appropriate value to target other versions of Windows.
#endif 

Ну, там, или какая у меня версия. Теперь вопросы:

1) Это решение гуд?
2) Автоматом эта директива устанавливается только с икспей? И каким образом?
3) Может есть тип проекта, чтобы она подставлялась?
...
Рейтинг: 0 / 0
29.10.2007, 14:52:48
    #34901746
cap83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
а функция какая ?
...
Рейтинг: 0 / 0
29.10.2007, 14:55:36
    #34901758
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
cap83а функция какая ?

Не пойму, зачем надо, но пожалуйста:

Код: plaintext
1.
2.
3.
4.
5.
6.
WINBASEAPI
BOOL
WINAPI
TryEnterCriticalSection(
    __inout LPCRITICAL_SECTION lpCriticalSection
    );
...
Рейтинг: 0 / 0
29.10.2007, 15:02:09
    #34901789
cap83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
Этот макрос объявлен в SdkDdkver.h ... А самому написать #ifdef тоже гуд )
...
Рейтинг: 0 / 0
29.10.2007, 15:06:59
    #34901814
cap83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
ААА сори нет ее там сейчас ....
...
Рейтинг: 0 / 0
29.10.2007, 15:07:51
    #34901818
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
cap83Этот макрос объявлен в SdkDdkver.h ...

Где распологается этот файл?
...
Рейтинг: 0 / 0
29.10.2007, 15:08:30
    #34901822
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
cap83А самому написать #ifdef тоже гуд )

А если я буду потом проект из другой оси компилить?
...
Рейтинг: 0 / 0
29.10.2007, 15:08:33
    #34901823
cap83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
ЕЕ руками надо определять дефайном ... А автоматом WINVER генерится
...
Рейтинг: 0 / 0
29.10.2007, 15:14:24
    #34901853
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
cap83ЕЕ руками надо определять дефайном ... А автоматом WINVER генерится

Таааак... очень интересно. У меня WINVER такая какая должна быть _WIN32_WINNT. Есть ли какое соотеветствие между этими двумя директивами? Т.е. может из одной другую можно воспроизводить? Или это для определенных версий винды? Кстати, откуда она береться?
...
Рейтинг: 0 / 0
29.10.2007, 15:14:46
    #34901856
cap83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
Ты майк файлом собираешь ? Передавай через него параметр с платформой ... /D WIN32 или там /D чтонибудь а у себя в коде

Код: plaintext
1.
2.
3.
4.
5.
6.
#ifdef WIN32
#ifndef _WIN32_WINNT
#define _WIN32_WINNT (что надо)
#endif
#endif 


Чтото в таком роде напиши
...
Рейтинг: 0 / 0
29.10.2007, 15:18:47
    #34901877
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
cap83Ты майк файлом собираешь ? Передавай через него параметр с платформой ... /D WIN32 или там /D чтонибудь а у себя в коде

Код: plaintext
1.
2.
3.
4.
5.
6.
#ifdef WIN32
#ifndef _WIN32_WINNT
#define _WIN32_WINNT (что надо)
#endif
#endif 


Чтото в таком роде напиши

Да, без разницы чем я собираю. Проект компилю, и в настройках знаю, куда можно директивы добавить. Меня интересует, - можно ли это значение получать откуда-то (допустим WINVER), и надежен ли этот способ?

Или же эта директива и имеет свое предназначение - для верной компиляции, необходимо явно указывать версию винды.
...
Рейтинг: 0 / 0
29.10.2007, 15:22:21
    #34901897
cap83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
Вообще компилятор не генерит никаких директив препроцессора ... Ты их должен либо в настройках проекта передать , либо файл заинклудить где она объявлена .... WINVER вот таким образом берется ...

#ifndef WINVER
#ifdef _WIN32_WINNT
// set WINVER based on _WIN32_WINNT
#define WINVER _WIN32_WINNT
#else
#define WINVER 0x0600
#endif
#endif
...
Рейтинг: 0 / 0
29.10.2007, 15:36:46
    #34901966
cap83
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
Точнее есть макросы которые по стандарту (ANSI) генерятся __DATE__ __FILE__ __LINE__ __STDC__ __TIME__ __TIMESTAMP__ Остальное уже от компилятора зависит вот ....
...
Рейтинг: 0 / 0
29.10.2007, 16:09:32
    #34902114
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
Akh1) Это решение гуд?ну… я бы ставил в опциях проекта.

Akh2) Автоматом эта директива устанавливается только с икспей? И каким образом?как я понимаю, такие штуки не сильно зависят от среды выполнения компилятора.

Akh3) Может есть тип проекта, чтобы она подставлялась?боюсь, придётся ручками.
...
Рейтинг: 0 / 0
29.10.2007, 16:18:41
    #34902165
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
Спасибо, cap83 и maXmo.
...
Рейтинг: 0 / 0
30.10.2007, 12:47:07
    #34904322
Борьба с _WIN32_WINNT.
Akh
Ну, там, или какая у меня версия.

Какая версия у тебя - неважно, это нужно, чтобы программа работала под операционной системой пользователя (как в комментарии и указано: "Change this to the appropriate value to TARGET other versions of Windows"). В разных версиях виндовса имеются разные системные библиотеки, в частности, Kernel32.dll. В одних версиях есть эта функция, в других - нет.
Akh
1) Это решение гуд?

Можно вставить объявление функции и руками, эти директивы сделаны для того, чтобы избежать ситуации, когда на целевой версии виндовс нет соотв. функции (см. выше).
Akh
3) Может есть тип проекта, чтобы она подставлялась?

Это надо делать руками в файле stdafx.h (о чем, впрочем, уже говорили).
...
Рейтинг: 0 / 0
30.10.2007, 14:24:20
    #34904763
Akh
Akh
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
Павел Палло Akh
Ну, там, или какая у меня версия.

Какая версия у тебя - неважно, это нужно, чтобы программа работала под операционной системой пользователя (как в комментарии и указано: "Change this to the appropriate value to TARGET other versions of Windows").

Вот с этого то и надо было начинать!
...
Рейтинг: 0 / 0
30.10.2007, 16:06:02
    #34905114
maXmo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Борьба с _WIN32_WINNT.
ну, я имел в виду именно кросс-компиляцию :)
maXmoкак я понимаю, такие штуки не сильно зависят от среды выполнения компилятора.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Борьба с _WIN32_WINNT. / 18 сообщений из 18, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]