Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Можно ли создать TCP-клиент в виде dll-приложения? используюя интерфейс winsock2 
:(
    Опции темы
BBulat
Дата 10.2.2009, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 5.12.2006

Репутация: нет
Всего: нет



TCP-клиент на winsock2 в виде консольного приложения у меня есть и норамльно работает с сервером. Мне необходимо реализовать этот клиент в виде dll приложения. Когда я компилирую dll, компилятор ругается на функции сокета ('WSAStartup' : undeclared identifier и т.п.), хотя хедер winsock2.h я подключил:
Код

// TCP клиент

#include <string.h>
#include <WINSOCK2.H>
#include <stdio.h>
#include <windows.h>
// client_for_LV.cpp : Defines the entry point for the DLL application.
//

#include "stdafx.h"
#include "extcode.h"

BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
                     )
{
    return TRUE;
}

extern "C" char* _declspec(dllexport) MyMess(char *sMess, int iCount);

char * MyMess(char *sMess, int iCount)
{

  #define PORT 100
  #define SERVERADDR "127.0.0.1"

  //int main(int argc, char* argv[])
  //{
    char buff[1024];
    char buff_1;
    printf("TCP DEMO CLIENT\n");

    // Инициализация библиотек Winsock
    if (WSAStartup(0x202,(WSADATA *)&buff[0]))
    {
      printf("WSAStart error %d\n",WSAGetLastError());
      return -1;
    }
.
.
.



Если поместить подключение winsock2.h внутрь dll-функции, то вылазит след-я ошибка: ...\winsock2.h(70) : error C2598: linkage specification must be at global scope. Ну это я так, на всякий случай сделал)
Как правильно реализовать TCP-клиента в виде dll?
Заранее благодарен!
PM MAIL   Вверх
BBulat
Дата 16.2.2009, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 5.12.2006

Репутация: нет
Всего: нет



Извиняюсь за то, что вновь поднимаю тему, но проблемы я не решил. TCP - клиент вообще может работать как dll-приложение?
PM MAIL   Вверх
SVN74
Дата 16.2.2009, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

Репутация: 1
Всего: 18



Цитата(BBulat @  16.2.2009,  15:24 Найти цитируемый пост)
TCP - клиент вообще может работать как dll-приложение? 

Конечно...

PM MAIL WWW   Вверх
REZiaMIX
Дата 16.2.2009, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 346
Регистрация: 3.11.2007

Репутация: нет
Всего: 4



Код

#pragma comment(lib,"ws2_32.lib")

Может поможет


--------------------
user posted image
PM MAIL   Вверх
BBulat
Дата 18.2.2009, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 5.12.2006

Репутация: нет
Всего: нет



Цитата(REZiaMIX @  16.2.2009,  21:20 Найти цитируемый пост)
#pragma comment(lib,"ws2_32.lib")

Компилятор ошибку выдает: error C2598: linkage specification must be at global scope
PM MAIL   Вверх
Олег2005
Дата 18.2.2009, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 421
Регистрация: 26.5.2005
Где: Рига Латвия

Репутация: 6
Всего: 11



Цитата(BBulat @  16.2.2009,  14:24 Найти цитируемый пост)
TCP - клиент вообще может работать как dll-приложение? 

Как это понять - dll-приложение?
Вы можете засунуть в dll функцию, исполняющую роль клиента и экспортировать ее

Compiler Error C2598
linkage specification must be at global scope

The linkage specifier was declared at local scope.
The following is an example of this error:

void func()
{
   extern "C" int func2();   // error, linkage declared in
   .                         //   block at local scope
   .
   .
}

extern "C" int func( int i );  // OK 
PM MAIL WWW MSN   Вверх
BBulat
Дата 18.2.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 5.12.2006

Репутация: нет
Всего: нет



Цитата(Олег2005 @ 18.2.2009,  21:13)
Цитата(BBulat @  16.2.2009,  14:24 Найти цитируемый пост)
TCP - клиент вообще может работать как dll-приложение? 

Как это понять - dll-приложение?
Вы можете засунуть в dll функцию, исполняющую роль клиента и экспортировать ее

Compiler Error C2598
linkage specification must be at global scope

The linkage specifier was declared at local scope.
The following is an example of this error:

void func()
{
   extern "C" int func2();   // error, linkage declared in
   .                         //   block at local scope
   .
   .
}

extern "C" int func( int i );  // OK

я это и пытаюсь сделать, но при компилятор ругается на функции сокета, хотя я подклюил инклуд и библиотеку:

#pragma comment(lib,"ws2_32.lib")
#include <WINSOCK2.H>
PM MAIL   Вверх
connector
Дата 24.2.2009, 12:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 22.6.2008

Репутация: нет
Всего: нет



Если вместе с winsock2.h была подключена какая-нибудь виндовая библиотека вида win*.h (к примеру windows.h или wininet.h), то придётся отключить эти win*.h.. странно, но тогда эти ошибки(ругается на ф-ции winsock2) исчезают.

Это сообщение отредактировал(а) connector - 24.2.2009, 13:01
PM MAIL   Вверх
Олег2005
Дата 25.2.2009, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Завсегдатай
Сообщений: 421
Регистрация: 26.5.2005
Где: Рига Латвия

Репутация: 6
Всего: 11



Цитата(connector @  24.2.2009,  11:51 Найти цитируемый пост)
Если вместе с winsock2.h была подключена какая-нибудь виндовая библиотека вида win*.h (к примеру windows.h или wininet.h), то придётся отключить эти win*.h.. странно, но тогда эти ошибки(ругается на ф-ции winsock2) исчезают.

winsock2.h  содержит windows.h - и потому последнюю не надо подключать

Добавлено через 1 минуту и 50 секунд
Цитата(BBulat @  18.2.2009,  20:59 Найти цитируемый пост)
#include <WINSOCK2.H> 

Почему большие буковки?
PM MAIL WWW MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0526 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.