Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.07.2013, 19:26   #1
arm9n
Пользователь
 
Регистрация: 24.07.2013
Сообщений: 19
Плохо Конфликтуют заголовочные файлы. Как исправить?

Есть некий исходный файл core.cpp (в составе решения vc++) с таким содержанием:

Код:
#include "core.h"    
#include <objidl.h>
#include <gdiplus.h>    
#include <winsock2.h>
#include <ws2tcpip.h>
#include <stdio.h>
2-3 - библиотеки GDI+, последние три - WinSock. При запуске компилятора вот такие ошибки:

Код:
error C3861: WSASetLastError: идентификатор не найден   ws2tcpip.h  649
error C3861: WSASetLastError: идентификатор не найден   ws2tcpip.h  703
error C3861: WSASetLastError: идентификатор не найден   ws2tcpip.h  742 
error C3861: WSASetLastError: идентификатор не найден   ws2tcpip.h  749 
error C3861: WSASetLastError: идентификатор не найден   ws2tcpip.h  793
error C3861: WSASetLastError: идентификатор не найден   ws2tcpip.h  800
error C3861: WSASetLastError: идентификатор не найден   ws2tcpip.h  841
error C3861: WSASetLastError: идентификатор не найден   ws2tcpip.h  848
error C2079: "sockaddr_gen::Address" использует неопределенный struct "sockaddr"    80  
error C2079: "sockaddr_gen::AddressIn" использует неопределенный struct "sockaddr_in"
и ещё 140 таких ошибок...

Но вот если убрать заголовочные файлы GDI+ и оставить WinSock - то всё компилируется без ошибок! И если наоборот - оставить только GDI+ - тоже все работает! Такое ощущение, что эти заголовочные файлы несовместимы друг с другом или испорчены. Но как быть? Мне нужны обе.
arm9n вне форума Ответить с цитированием
Старый 24.07.2013, 19:42   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
и оставить WinSock
Не знаю как в Си, но в Паскале порядок определения модулей важен.
Попробуй прописать <winsock2.h> последним с списке инклудов.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.07.2013, 19:56   #3
arm9n
Пользователь
 
Регистрация: 24.07.2013
Сообщений: 19
По умолчанию

Да, действительно, заработало. А откуда я должен знать, в каком порядке их подключать? От чего это зависит? Можно ли сделать так, чтобы икнлудить в проивзольном порядке?
arm9n вне форума Ответить с цитированием
Старый 24.07.2013, 22:03   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
А откуда я должен знать, в каком порядке их подключать?
Ну... Допустим методом тыка узнать.
Цитата:
От чего это зависит?
От функций, которые используешь. Если в разных хедерах есть функции с одинаковой спецификацией то берется из хедера, что ниже из них.
(Если не ошибаюсь)
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.08.2013, 02:14   #5
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от arm9n Посмотреть сообщение
Да, действительно, заработало. А откуда я должен знать, в каком порядке их подключать? От чего это зависит? Можно ли сделать так, чтобы икнлудить в проивзольном порядке?
Вы и не должны ничего знать. Если библиотека сделана по уму - её можно инклюдить как угодно.

Если не по уму - она может начать конфликтовать с другими из-за глобальных имен, или макросов препроцессора. Тут уже ничего не поделаешь.

Всякие мелкософты любят грешить препроцессором. Из-за чего разные грабельки выстреливают с завидным постоянством.
Здесь нужно смотреть ошибки компиляции и разбираться. Ну или выбрасывать в мусорку, и заменять чем то более моральным.
_Bers вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заголовочные файлы Dima-War Общие вопросы C/C++ 5 11.04.2013 12:25
Заголовочные файлы Dt Peleduy Qt и кроссплатформенное программирование С/С++ 0 17.10.2012 13:19
Заголовочные файлы в Си Pirr Общие вопросы C/C++ 12 18.03.2011 00:29
Заголовочные файлы legendary Общие вопросы C/C++ 1 11.09.2010 19:41
Заголовочные файлы Гром Общие вопросы C/C++ 4 31.08.2009 15:36