error LNK2019: unresolved external symbol - Что это значит?
От: Antrekot  
Дата: 10.05.06 11:25
Оценка:
Народ, помогите плиз! Ковыряюсь с этой хренью с утра
Короче постоянно вылезает ошибка:
IrDAClientDlg.obj : error LNK2019: unresolved external symbol _htonl referenced in function "private: unsigned int __thiscall CIrDAClientDlg::Send(unsigned short const *)" (?Send@CIrDAClientDlg@@AAEIPBG@Z)

В чем может быть проблема?
Re: error LNK2019: unresolved external symbol - Что это знач
От: Bell Россия  
Дата: 10.05.06 11:49
Оценка:
Здравствуйте, Antrekot, Вы писали:

A>Народ, помогите плиз! Ковыряюсь с этой хренью с утра

A>Короче постоянно вылезает ошибка:
A>IrDAClientDlg.obj : error LNK2019: unresolved external symbol _htonl referenced in function "private: unsigned int __thiscall CIrDAClientDlg::Send(unsigned short const *)" (?Send@CIrDAClientDlg@@AAEIPBG@Z)

A>В чем может быть проблема?

Ws2.lib подключена в опциях линкера?
Любите книгу — источник знаний (с) М.Горький
Re[2]: error LNK2019: unresolved external symbol - Что это з
От: Antrekot  
Дата: 10.05.06 11:58
Оценка:
Здравствуйте, Bell, Вы писали:

B>Здравствуйте, Antrekot, Вы писали:


A>>В чем может быть проблема?

B>Ws2.lib подключена в опциях линкера?

В линкере все нормально.
Сильно подозрения падают на LPCTSTR.
Выглядит это так:

class CIrDAClientDlg : public CDialog
{
// Construction
public:
    CIrDAClientDlg(CWnd* pParent = NULL);    // standard constructor

// Dialog Data
    //{{AFX_DATA(CIrDAClientDlg)
    enum { IDD = IDD_IRDACLIENT_DIALOG };
    CString    m_strMessage;
    //}}AFX_DATA

    // ClassWizard generated virtual function overrides
    //{{AFX_VIRTUAL(CIrDAClientDlg)
    protected:
    virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
    //}}AFX_VIRTUAL

// Implementation
protected:
    HICON m_hIcon;

    // Generated message map functions
    //{{AFX_MSG(CIrDAClientDlg)
    virtual BOOL OnInitDialog();
    afx_msg void OnButton1();
    afx_msg void OnDestroy();
    //}}AFX_MSG
    DECLARE_MESSAGE_MAP()

private:
    UINT Send(LPCTSTR lpszMessage); // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
};


Удалив эту строку, ошибок сразу нет
Re[3]: error LNK2019: unresolved external symbol - Что это з
От: Bell Россия  
Дата: 10.05.06 12:01
Оценка:
Здравствуйте, Antrekot, Вы писали:

A>Удалив эту строку, ошибок сразу нет


Удалив только объявление функции, или и определение тоже?
Любите книгу — источник знаний (с) М.Горький
Re[4]: error LNK2019: unresolved external symbol - Что это з
От: Antrekot  
Дата: 10.05.06 12:06
Оценка:
Здравствуйте, Bell, Вы писали:

B>Здравствуйте, Antrekot, Вы писали:


B>Удалив только объявление функции, или и определение тоже?

Конечно определение тоже:
Само определение достаточно запутанное:

UINT CIrDAClientDlg::Send(LPCTSTR lpszMessage)
{
    ASSERT(AfxIsValidString(lpszMessage));

    // Check the message length
    if (_tcslen(lpszMessage) <= 0)
        return IDS_ERROR_NO_MESSAGE;
    
    CWaitCursor wc;

    USES_CONVERSION;

    // Make sure the socket layer is active
    CWinSock winSock;

    // Open an IrDA socket
    CIrDASocket sd;
    if (!sd.Open())
        return IDS_ERROR_IRDA_NO_SOCKET;

    // Try several times to find a device
    DEVICELIST deviceList = { 0 };
    for (int nTry = 0; nTry < (LONG_TIMEOUT / 1000); nTry++)
    {
        // Try to find a device
        if (!sd.EnumDevices(&deviceList, sizeof(DEVICELIST)))
            return IDS_ERROR_IRDA_CANNOT_ENUMDEVS;

        // Abort if we have found a device
        if (deviceList.numDevice > 0)
            break;

        // Wait a second
        ::Sleep(1000);
    }

    // Check if all retries have been finished
    if (deviceList.numDevice == 0)
        return IDS_ERROR_NO_DEVICES_FOUND;

    // Obtain the devicename (ANSI)
    LPCTSTR lpszDeviceName = A2CT(deviceList.Device[0].irdaDeviceName);

    // Ask the user if recepient is okay
    CString strCaption, strText;
    strCaption.LoadString(IDS_MESSAGE_SEND);
    strText.Format(IDS_MESSAGE_SENDTOHOST, lpszDeviceName);
    if (MessageBox(strText, strCaption, MB_ICONQUESTION | MB_YESNO) != IDYES)
        return 0;

    // Restore the wait cursor
    wc.Restore();

    // A device has been found, so try to connect
    if (!sd.Connect(IRDA_SERVICENAME, deviceList.Device[0].irdaDeviceID, LONG_TIMEOUT))
        return IDS_ERROR_IRDA_CANNOT_CONNECT;

    // Send the length of the message to the server
    u_long ulLength = htonl(_tcslen(lpszMessage));
    
    if (!sd.Send(ulLength, SHORT_TIMEOUT))
        return IDS_ERROR_IRDA_CANNOT_SEND;

    // Send the message to the server
    if (!sd.Send((LPCVOID) T2CA(lpszMessage), _tcslen(lpszMessage), SHORT_TIMEOUT))
        return IDS_ERROR_IRDA_CANNOT_SEND;

    // Return successful
    return 0;
}


Вообще я скачивал проект у человека, у которого он работал. Что очень странно
Re: error LNK2019: unresolved external symbol - Что это знач
От: ekamaloff Великобритания  
Дата: 10.05.06 12:08
Оценка:
Здравствуйте, Antrekot, Вы писали:

A>Народ, помогите плиз! Ковыряюсь с этой хренью с утра

A>Короче постоянно вылезает ошибка:
A>IrDAClientDlg.obj : error LNK2019: unresolved external symbol _htonl referenced in function "private: unsigned int __thiscall CIrDAClientDlg::Send(unsigned short const *)" (?Send@CIrDAClientDlg@@AAEIPBG@Z)

A>В чем может быть проблема?


Линкер почему-то ищет функцию htonl по декорированному имени — ошибка скорее всего в этом. Нечто похожее уже обсуждалось, но к сожалению поиск на RSDN как обычно глючит. Попробуй найти по словам "тут проблема в декорировании имен author(ekamaloff)", там ниже был хороший ответ Кодт-а на эту тему.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
It is always bad to give advices, but you will be never forgiven for a good one.
Oscar Wilde
Re: error LNK2019: unresolved external symbol - Что это знач
От: Аноним  
Дата: 10.05.06 12:09
Оценка:
Здравствуйте, Antrekot, Вы писали:

A>Народ, помогите плиз! Ковыряюсь с этой хренью с утра

A>Короче постоянно вылезает ошибка:
A>IrDAClientDlg.obj : error LNK2019: unresolved external symbol _htonl referenced in function "private: unsigned int __thiscall CIrDAClientDlg::Send(unsigned short const *)" (?Send@CIrDAClientDlg@@AAEIPBG@Z)

A>В чем может быть проблема?


Прилинкуй к проекту Ws2_32.lib
Re[5]: error LNK2019: unresolved external symbol - Что это з
От: Bell Россия  
Дата: 10.05.06 12:12
Оценка:
Здравствуйте, Antrekot, Вы писали:

B>>Удалив только объявление функции, или и определение тоже?

A>Конечно определение тоже:
A>Само определение достаточно запутанное:
...
Линкер ругается на htonl вот в этой строке:
 u_long ulLength = htonl(_tcslen(lpszMessage));

Судя по MSDN, эта функция оперделена в Ws2.lib. Самое простое объяснение — ты не указал эту библиотеку в настройках, или ее у тебя попросту нет.
Любите книгу — источник знаний (с) М.Горький
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.