Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Использование своих функций из потока


Автор: ksili 7.3.2007, 10:33
Пытаюсь из функции потока вызвать свою функцию (сделал её членом класса потока). Однако BCB6 пишет мне, что Call to undefined function

Вот код из ConferenceThreadUnit.cpp:
Код

void __fastcall TConferenceThread::Execute()
{
    //---- Place thread code here ----
 char buffer1[100],buffer2[10],nomer[15];
 int i1,i2,count=0;
 DWORD dwRead9, dwWritten9;
 AnsiString s;

 memset(buffer1,0,100);
 memset(buffer2,0,10);
 memset(nomer,0,15);
 if(!SendCommand_2("AT+CHUP\r",hCom))    return;
}
//---------------------------------------------------------------------------
int __fastcall SendCommand_2(AnsiString cmd,HANDLE port)
{
 DWORD dwWritten9;

 if(WriteFile(port, cmd.c_str(), cmd.Length(), &dwWritten9, NULL)==0)
    {
     CloseHandle(port);
     port = NULL;
     return 0;
    }
 PurgeComm(port,PURGE_TXCLEAR | PURGE_RXCLEAR);
 return 1;
}

Заголовочный файл:
Код

//---------------------------------------------------------------------------

#ifndef ConferenceThreadUnitH
#define ConferenceThreadUnitH
//---------------------------------------------------------------------------
#include <Classes.hpp>
//---------------------------------------------------------------------------
class TConferenceThread : public TThread
{
private:
protected:
    void __fastcall Execute();
public:
    __fastcall TConferenceThread(bool CreateSuspended);
    int  __fastcall SendCommand_2(AnsiString cmd,HANDLE port);
    HANDLE hCom;
    HANDLE hComVoice;
    AnsiString num;
};
//---------------------------------------------------------------------------
#endif

Если переместить объявление SendCommand_2 из секции public в секцию protected, то уже получается другая ошибка:
[Linker error] Unresolved external '... SendCommand_2  .... ' referenced from ...

Что я не так делаю?

Автор: _hunter 7.3.2007, 11:42
TConferenceThread забыл перед определением приписать...

Автор: pandrew 7.3.2007, 11:42
Почему ссылка не удовлетворяется не понял (но Bulder не любит подряд private, protected - выкини что-нибудь).
Функция Execute у тебя неправильная. Посмотри примеры на Thread.

Автор: ksili 9.3.2007, 06:47
_hunter, спасибо, помогло
Код

int __fastcall TConferenceThread::SendCommand_2(AnsiString cmd,HANDLE port)

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