powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / unresolved external symbol
11 сообщений из 11, страница 1 из 1
unresolved external symbol
    #34963672
ака123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
привет всем.
в msdn нашел простой пример работы с сокетами(который "ничего не делает"), попытался его скомпилировать(vs2005) и получил следующие ошибки, линковщик ругается на то что не знает таких функций..
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
------ Build started: Project: test_WSA, Configuration: Debug Win32 ------
Linking...
test_WSA.obj : error LNK2019: unresolved external symbol __imp__WSACleanup@ 0  referenced in function _main
test_WSA.obj : error LNK2019: unresolved external symbol __imp__WSAAccept@ 20  referenced in function _main
test_WSA.obj : error LNK2019: unresolved external symbol __imp__listen@ 8  referenced in function _main
test_WSA.obj : error LNK2019: unresolved external symbol __imp__bind@ 12  referenced in function _main
test_WSA.obj : error LNK2019: unresolved external symbol __imp__inet_addr@ 4  referenced in function _main
test_WSA.obj : error LNK2019: unresolved external symbol __imp__inet_ntoa@ 4  referenced in function _main
test_WSA.obj : error LNK2019: unresolved external symbol __imp__gethostbyname@ 4  referenced in function _main
test_WSA.obj : error LNK2019: unresolved external symbol __imp__htons@ 4  referenced in function _main
test_WSA.obj : error LNK2019: unresolved external symbol __imp__socket@ 12  referenced in function _main
test_WSA.obj : error LNK2019: unresolved external symbol __imp__WSAStartup@ 8  referenced in function _main
D:\WORK\MSVStudio\Projects\test_WSA\Debug\test_WSA.exe : fatal error LNK1120:  10  unresolved externals
Build log was saved at "file://d:\WORK\MSVStudio\Projects\test_WSA\test_WSA\Debug\BuildLog.htm"
test_WSA -  11  error(s),  0  warning(s)
========== Build:  0  succeeded,  1  failed,  0  up-to-date,  0  skipped ==========

ВОПРОС: в чем проблема ?
исходный текст
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
#include <stdio.h>
#include "winsock2.h"

void main() {
  //-----------------------------------------
  // Declare and initialize variables.
  WSADATA wsaData;
  SOCKET ListenSocket, AcceptSocket;
  sockaddr saClient;
  int iClientSize = sizeof(saClient);
  u_short port =  27015 ;
  char* ip;
  sockaddr_in service;

  //-----------------------------------------
  // Initialize Winsock.
  WSAStartup(MAKEWORD( 2 , 2 ), &wsaData);

  //-----------------------------------------
  // Create a listening socket.
  ListenSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

  //-----------------------------------------
  // Set up the sock addr structure that the listening socket
  // will be bound to. In this case, the structure holds the
  // local IP address and the port specified.
  service.sin_family = AF_INET;
  service.sin_port = htons(port);
  hostent* thisHost;
  thisHost = gethostbyname("");
  ip = inet_ntoa (*(struct in_addr *)*thisHost->h_addr_list);
  service.sin_addr.s_addr = inet_addr(ip);

  //-----------------------------------------
  // Bind the listening socket to the IP address.
  // and port number specified by the sockaddr structure.
  bind(ListenSocket, (SOCKADDR *) &service, sizeof(SOCKADDR));

  //-----------------------------------------
  // Make the listening socket listen for incoming
  // connection requests.
  listen(ListenSocket,  1 );
  printf("Listening...\n");

  //-----------------------------------------
  // Accept an incoming connnection request on the
  // listening socket and transfer control to the 
  // accepting socket.
  AcceptSocket = WSAAccept(ListenSocket, &saClient, &iClientSize, NULL, NULL);

  //-----------------------------------------
  // Clean up and quit. At this point, the application could
  // handle data transfer on the socket, or other socket
  // functionality.
  WSACleanup();
  return;
}
...
Рейтинг: 0 / 0
unresolved external symbol
    #34963691
smskin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема в том что надо было линковать с ws2_32.lib

Заходишь Project\Properties\ConfigurationProperties\Linker\CommandLine
В Additional Options пишешь ws2_32.lib
жмешь кнопочку ОК
...
Рейтинг: 0 / 0
unresolved external symbol
    #34963701
ака123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
smskinПроблема в том что надо было линковать с ws2_32.lib

Заходишь Project\Properties\ConfigurationProperties\Linker\CommandLine
В Additional Options пишешь ws2_32.lib
жмешь кнопочку ОК
спасибо за ответ..
если можно объясни в чем была проблема , в том что линкер не знал где искать dll ?
...
Рейтинг: 0 / 0
unresolved external symbol
    #34963749
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ака123 wrote:

> в том что линкер не знал где искать dll ?
Для поключения dll нужен *.lib файл. Не использован *.lib - не будет
доступа к dll (хотя либы не только для dll :)). Линкер не будет
пытаться искать этот файл, если ему явно не указать, что такой нужен.
--
We are all going to hell and I'm driving the bus
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
unresolved external symbol
    #34967610
smskinПроблема в том что надо было линковать с ws2_32.lib

Заходишь Project\Properties\ConfigurationProperties\Linker\CommandLine
В Additional Options пишешь ws2_32.lib
жмешь кнопочку ОК
В принципе, можно никуда и не заходить, а дописать в исходник строчку #pragma comment(lib, "ws2_32.lib"):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
#include <stdio.h>
#include "winsock2.h"
#pragma comment(lib, "ws2_32.lib")

void main() {
...
}
...
Рейтинг: 0 / 0
unresolved external symbol
    #34967685
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну сколько можно портить язык идиотскими прагмами?
...
Рейтинг: 0 / 0
unresolved external symbol
    #34969211
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Павел Палло wrote:

> #pragma comment(lib, "ws2_32.lib")
Ага, и работать это будет только под один компилятор.
--
We are all going to hell and I'm driving the bus
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
unresolved external symbol
    #34970709
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ErV
> #pragma comment(lib, "ws2_32.lib")
Ага, и работать это будет только под один компилятор.


А то что WinSock и DLL работают только под Windows вас не смущает
...
Рейтинг: 0 / 0
unresolved external symbol
    #34970738
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) ErV
> #pragma comment(lib, "ws2_32.lib")
Ага, и работать это будет только под один компилятор.


А то что WinSock и DLL работают только под Windows вас не смущает

Интерфейс кроссплатформен, а dll и в билдере, comeau, minGW, win gcc, ... думаю можно подключать ;)
...
Рейтинг: 0 / 0
unresolved external symbol
    #34971607
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan) wrote:

> А то что WinSock и DLL работают только под Windows вас не смущает
Кроме MSVC есть ещё пачка компиляторов, напр билдер, mingw, openwatcom.
Есть и другие. Кстати, прагмы у них разные.
--
We are all going to hell and I'm driving the bus
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
unresolved external symbol
    #34973512
Lepsik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в билдере таже самая прагма работает также
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / unresolved external symbol
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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