Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / unresolved external symbol / 11 сообщений из 11, страница 1 из 1
25.11.2007, 15:19:20
    #34963672
ака123
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unresolved external symbol
привет всем.
в 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
25.11.2007, 15:30:34
    #34963691
smskin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unresolved external symbol
Проблема в том что надо было линковать с ws2_32.lib

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

Заходишь Project\Properties\ConfigurationProperties\Linker\CommandLine
В Additional Options пишешь ws2_32.lib
жмешь кнопочку ОК
спасибо за ответ..
если можно объясни в чем была проблема , в том что линкер не знал где искать dll ?
...
Рейтинг: 0 / 0
25.11.2007, 16:32:34
    #34963749
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unresolved external symbol
ака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
27.11.2007, 12:05:15
    #34967610
unresolved external symbol
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
27.11.2007, 12:21:45
    #34967685
blinded
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unresolved external symbol
Ну сколько можно портить язык идиотскими прагмами?
...
Рейтинг: 0 / 0
27.11.2007, 16:56:56
    #34969211
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unresolved external symbol
Павел Палло 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
28.11.2007, 09:49:19
    #34970709
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unresolved external symbol
ErV
> #pragma comment(lib, "ws2_32.lib")
Ага, и работать это будет только под один компилятор.


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


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

Интерфейс кроссплатформен, а dll и в билдере, comeau, minGW, win gcc, ... думаю можно подключать ;)
...
Рейтинг: 0 / 0
28.11.2007, 13:30:15
    #34971607
ErV
ErV
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unresolved external symbol
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
29.11.2007, 02:05:47
    #34973512
Lepsik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
unresolved external symbol
в билдере таже самая прагма работает также
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / unresolved external symbol / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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