PDA

View Full Version : مشکل با کامپایل سوکت



aloneinc
شنبه 07 مهر 1386, 13:44 عصر
با یاد او

هنگام کامپایل یه سوکت به این ارور ها برخورد کردم دلیل چیه ؟

main.o(.text+0x730):main.c: undefined reference to `WSAStartup@8'
main.o(.text+0x753):main.c: undefined reference to `WSACleanup@0'

main.o(.text+0x76d):main.c: undefined reference to `gethostbyname@4'
main.o(.text+0x800):main.c: undefined reference to `htons@4'
main.o(.text+0x826):main.c: undefined reference to `socket@12'
main.o(.text+0x85f):main.c: undefined reference to `connect@12'
main.o(.text+0x8b0):main.c: undefined reference to `recv@16'
main.o(.text+0x93d):main.c: undefined reference to `send@16'
main.o(.text+0x977):main.c: undefined reference to `recv@16'
main.o(.text+0xa46):main.c: undefined reference to `send@16'
main.o(.text+0xa80):main.c: undefined reference to `recv@16'
main.o(.text+0xb4f):main.c: undefined reference to `send@16'
main.o(.text+0xb89):main.c: undefined reference to `recv@16'
main.o(.text+0xc16):main.c: undefined reference to `send@16'
main.o(.text+0xc50):main.c: undefined reference to `recv@16'
main.o(.text+0xdc1):main.c: undefined reference to `send@16'
main.o(.text+0xdfb):main.c: undefined reference to `recv@16'
main.o(.text+0xe88):main.c: undefined reference to `send@16'
main.o(.text+0xec2):main.c: undefined reference to `recv@16'
main.o(.text+0xf0b):main.c: undefined reference to `closesocket@4'
main.o(.text+0xf13):main.c: undefined reference to `WSACleanup@0'

Nima_NF
شنبه 07 مهر 1386, 21:41 عصر
آیا شما فایل های lib مورد نیاز توابع کتابخانه ای سوکت را به properties پروژه شما لینک کرده اید؟ احتمالا نه.
در بخش linker این کار را انجام دهید.

illegalyasync
سه شنبه 10 مهر 1386, 19:17 عصر
#pragma comment (lib, "ws2_32.lib")

aloneinc
چهارشنبه 11 مهر 1386, 10:56 صبح
با یاد او
تشکر عزیزان
نه کد زیر رو linker دادم درست شد .

-lws2_32
اگه میشه در مورد اینکه این کد چه عملی رو انجام میده و... توضیح بدید .

تشکر

Inprise
چهارشنبه 11 مهر 1386, 13:16 عصر
در این مواقع باید کامپایلر مورد استفاده ات رو هم بگی ، البته تو این مورد خاص از o. ها کاملا مشخص بود که از mingw یا یه کامپایلری بر اساس اون استفاده میکنی . l- و هر چیزی که بعدش مینویسی باعث میشه کتابخانهء مذکور هم به باینری اجرائی ات لینک بشه . در واقع همان کاری که دو نفر قبلی گفتند و مختص به ویژوال سی است را انجام میده . ws2_32 هم نام کتابخانهء Winsock32 است که لینک شدنش به باینری ات باعث میشه Winsock APIهات Resolve بشن . چه از توابع ویندوز چه از سایر توابعی که در یک کتابخانهء دیگر قرار دارند اگر بخواهی استفاده کنی باید یا ابتدا بصورت پویا ( loadlibrary/getprocaddress ) یک اشاره گر به تابع داشته باشی ، یا اگر بصورت استاتیک ازش استفاده میکنی حتما باینری ات را بهش لینک کنی .