необъявленный идентификатор SO_EXCLUSIVEADDRUSE при сборке Apache Axis2 / C - PullRequest
0 голосов
/ 07 ноября 2008

Я пытаюсь собрать Apache Axis2 / C (на самом деле я создаю оболочку WSO2 WSF / C ++ для него), и он продолжает выдавать ошибку, когда сталкивается с символом SO_EXCLUSIVEADDRUSE. Это опция сокетов, и MSDN говорит, что она должна быть доступна. Я использую MSVC ++ 6.0 на Win Server 2k3. У меня нет выбора по поводу компилятора или ОС ... если бы я был на Linux, я бы уже сделал: P

Я посмотрел на установку VS2005 и обнаружил, что она содержит #define для этой константы в winsock2.h. Его нет в winsock2.h, который есть у меня для MSVC6. Кроме того, в VS2005 он находится в папке PlatformSDK внутри каталога VS2005, в то время как для MSVC6 такого каталога нет. Почему этот символ отсутствует? Как я могу получить это? Я испытываю желание просто скопировать его, но кто знает, что еще мне будет не хватать в будущем ... Есть идеи?

1 Ответ

1 голос
/ 24 января 2011

Начиная с Visual Studio .Net 2003, Microsoft меняет свой способ предоставления PlatformSDK. Это позволяет компилятору C / C ++ использовать PlatformSDK, отличную от связанной версии с пакетом VC.

Вы можете установить PlatformSDK для Windows Server 2k3, но последний SDK, который будет работать с VC 6.0, - это февральское издание 2003 года, которое недоступно на веб-сайте Microsoft.

Таким образом, вы можете просто скопировать #define в свой код перед использованием SO_EXCLUSIVEADDRUSE. Должно работать и поддерживать Win2k3.

...