Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > проблема с вызовом winapi


Автор: nadge 9.3.2005, 20:04
Короче поставил сегодня MSVC++.NET. Мне нужно написать маленькую программку. Ну я отрубил стандартные библиотеки, объединил секции кода и данных и т.п. ОК. MessageBox проверил - работает. Теперь пишу:
Код

#include <windows.h>

void WINAPI MMain()
{
    WSADATA wsaData;
    if(WSAStartup(MAKEWORD(1,1), &wsaData)!=0) return;
    if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1) {
        WSACleanup();
        return;
    }

    MessageBoxA(0,"тест","тест",0);
    ExitProcess(0);
}

И Опа! Линкер мне выдает "meliska error LNK2019: unresolved external symbol ___security_cookie referenced in function "void __stdcall MMain(void)" (?MMain@@YGXXZ)"
Методом комментирования установил, что ругаетсч он на строчку "WSADATA wsaData;".

Код я взял из программы на VC++6.0 и там все работало.


Вобщем, прошу помощи. Заранее спасибо

Автор: nadge 9.3.2005, 20:19
Попробовал иначе:
Код

typedef struct MelWSAData {
        WORD                    wVersion;
        WORD                    wHighVersion;
        char                    szDescription[WSADESCRIPTION_LEN+1];
        char                    szSystemStatus[WSASYS_STATUS_LEN+1];
        unsigned short          iMaxSockets;
        unsigned short          iMaxUdpDg;
        char FAR *              lpVendorInfo;
} MELWSADATA;


void WINAPI MMain()
{
    MELWSADATA wsaData;

}


Ругается. Если закомментить "MELWSADATA wsaData;", то не ругается. Т.е. проблема со структурами.

А если объявить MMain как _declspec(naked), то не ругается и нормально все линкует.

Автор: nadge 9.3.2005, 20:36
Все, разобрался. Тему можно закрыть.

Автор: Alexandr87 10.3.2005, 13:56
помоему для корректной работы WSAStartup необходимо ws2_32.lib подключить

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)