2008-11-07 9 views
0

Je tente de construire Apache Axis2/C (en fait je construis le WSO2 WSF/C++ wrapper pour cela) et il continue à me donner une erreur quand il tombe sur le symbole SO_EXCLUSIVEADDRUSE. C'est une option de socket, et MSDN dit qu'elle devrait être disponible. J'utilise MSVC++ 6.0 sur Win Server 2k3. Je n'ai pas le choix sur le compilateur ou le système d'exploitation ... Si j'étais sur Linux, je l'aurais déjà fait: Pidentificateur non déclaré SO_EXCLUSIVEADDRUSE lors de la construction d'Apache Axis2/C

J'ai regardé une installation VS2005 et j'ai découvert qu'elle contient le #define pour cette constante dans winsock2.h. Ce n'est pas là dans le winsock2.h que j'ai pour MSVC6. En outre, dans VS2005, il se trouve sous le dossier PlatformSDK à l'intérieur du répertoire VS2005, alors qu'il ne semble pas y avoir un tel répertoire pour MSVC6. Pourquoi ce symbole est-il manquant? Comment puis-je l'avoir? Je suis tenté de le copier, mais qui sait quoi d'autre me manquera ... Des idées?

Répondre

1

Depuis Visual Studio .Net 2003, Microsoft a modifié son mode de livraison PlatformSDK. Il permet au compilateur C/C++ d'utiliser PlatformSDK autre que la version fournie avec le paquet VC.

Vous pouvez installer PlatformSDK pour Windows Server 2k3, mais le dernier SDK qui fonctionnera avec VC 6.0 est l'édition de février 2003 qui n'est pas disponible sur le site Web de Microsoft.

Donc, vous pouvez simplement copier le #define à votre code avant d'utiliser SO_EXCLUSIVEADDRUSE. Cela devrait fonctionner et être supporté par Win2k3.