Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Linker Error] создавать хедеры 
:(
    Опции темы
Sergio
Дата 26.4.2007, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

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



Здраствуйте. Создал File2.cpp:
Код

void SS() {
      int a=0;
 }

и создал File2.h:
Код

void SS();

Вызываю в Юнит1 эту функцию:
Код

void __fastcall TForm1::Button2Click(TObject *Sender)
{
  SS();
}

А мне пишет ошибку:
Цитата

[Linker Error] Unresolved external 'SS()' referenced from E:\PROGRAMMING\LVIVLANCHAT\UNIT1.OBJ

Что это может быть? Не находит функцию, что-ли? Хотя я подключил хедер
PM MAIL ICQ   Вверх
Klin
Дата 26.4.2007, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Что-то такео у меня было (сейчас не вспомню), поробуй так:
Код

 int a;
 void myfun() {
  a  = 20;
 };


Код

#include "fun.h"

void __fastcall TForm1::Button2Click(TObject *Sender)
{
  myfun();
}




--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Sergio
Дата 26.4.2007, 16:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

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



Klin, не канает smile 
PM MAIL ICQ   Вверх
SenkraD
Дата 26.4.2007, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Функцию он видит, а вот её реализацию нет!!
Поэтому извиняюсь за тупой вопрос а ты File2.cpp к проекту добавил или File2.h поключил к File2.cpp ?

Это сообщение отредактировал(а) SenkraD - 26.4.2007, 16:21


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Klin
Дата 26.4.2007, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Sergio @  26.4.2007,  16:46 Найти цитируемый пост)
Здраствуйте. Создал File2.cpp:


Цитата(Sergio @  26.4.2007,  16:46 Найти цитируемый пост)
и создал File2.h:


Цитата(Sergio @  26.4.2007,  16:46 Найти цитируемый пост)
Вызываю в Юнит1 эту функцию:


???

не понял ход твоих мыслей, выложи код в пост полностью


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Klin
Дата 26.4.2007, 16:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



сделай как я написал, проверил все путем


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
Sergio
Дата 26.4.2007, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

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



SenkraD, добавил. Как же без него  smile 
Вот Юнит1:
Код

//---------------------------------------------------------------------------
#include <winsock.h>
#include <vcl.h>
#include <windows.h>
#pragma hdrstop


#include "Unit1.h"
#include "File1.h"
#include "File2.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#pragma comment(lib, "ws2_32.lib")
TForm1 *Form1;

__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
  SendAll();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{

ServerConnect();
 CreateThread(NULL,0,ReceiveLoop,0,0,NULL);
  ClientConnect();
  //AddToList();
}
//---------------------------------------------------------------------------


void __fastcall TForm1::FormResize(TObject *Sender)
{
   Memo1->Width = Form1->Width*0.8;

   //Memo1->Height=Form1->Height*0.8;

}
//---------------------------------------------------------------------------



void __fastcall TForm1::Button2Click(TObject *Sender)
{
 SS();
}
//---------------------------------------------------------------------------

Вот File1.h
Код

#include "Unit1.h"
 #include <vector.h>

  struct Package {
    char Message[512];
    char IP[15];
    char ComputerName[20];
    char NickName[15];
    char TypeMsg[10];
   };

void ClientConnect();
void ServerConnect();
void SendAll();
void Disconnect();
void Receive();
DWORD WINAPI ReceiveLoop(LPVOID lParam);

void SearchInList(Package pack);
void DisplayList();
void AddToList();

Вот File1.cpp
Код

 #include <vcl.h>
 #include <windows.h>
 #include "Unit1.h"
 #include <vector.h>
 #include <string.h>


// Loading library winsock
  WSADATA wsa;
  SOCKET mySocket = NULL;
  sockaddr_in AdressInfo;
  int AdressInfoSize;

// Loading library winsock
     WSADATA wsd;
     SOCKET SSocket;
     sockaddr_in SAdressInfo;
     int SAdressInfoSize;

// List of contacters
  struct Package {
    char Message[512];
    char IP[15];
    char ComputerName[20];
    char NickName[15];
    char TypeMsg[10];
   };
vector<Package> ContactList;

//---------------------------------------------------------------------------
void AddToList() {
    Package SendPackage = {0};

    StrCopy(SendPackage.Message,Form1->Edit1->Text.c_str());
    StrCopy(SendPackage.NickName,Form1->Edit2->Text.c_str());
    StrCopy(SendPackage.IP,Form1->Powersock1->LocalIP.c_str());
    gethostname(SendPackage.ComputerName,sizeof(SendPackage.ComputerName));
    StrCopy(SendPackage.TypeMsg, "tolist");

     sendto(mySocket,(char*)&SendPackage,sizeof(SendPackage),0,(struct sockaddr*)&AdressInfo,AdressInfoSize);

 }
//---------------------------------------------------------------------------

void SearchInList(Package pack) {

 if(ContactList.size()!= 0)
  {
   bool hasNext=true;
   int count=0;
    for(int a=0; a<ContactList.size(); a++)
     {
      if(strcmp(ContactList.at(a).IP, pack.IP)==0)
       {
        StrCopy(ContactList.at(a).NickName, pack.NickName);
          break;
       }
      else {
        if(hasNext == false)
         {
           ContactList.push_back(pack);
         }
          continue;
       }
        if(ContactList.size() == ++count)
          hasNext = false;
     }
  }
  else {
    ContactList.push_back(pack);
   }
 }

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

void DisplayList() {
 Form1->ListBox1->Clear();
  for(int a=0; a<ContactList.size(); a++)
   {
    Form1->ListBox1->Items->Add(ContactList.at(a).NickName);
   }
 }
 
//---------------------------------------------------------------------------

void ClientConnect() {
  if (WSAStartup(MAKEWORD(1,0), &wsa) != 0)
    {
    MessageBox(0, "Can't load WinSock", "Error", 0);
    }

 mySocket = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
 if (mySocket == INVALID_SOCKET)
  {
    MessageBox(0, "Can't create socket", "Error", 0);
  }
    AdressInfo.sin_family = AF_INET;
    AdressInfo.sin_port = htons(27001);
    AdressInfo.sin_addr.s_addr=inet_addr("172.27.255.255");
    AdressInfoSize = sizeof(AdressInfo);
 }

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

void SendAll() {

    Package SendPackage = {0};

    StrCopy(SendPackage.Message,Form1->Edit1->Text.c_str());
    StrCopy(SendPackage.NickName,Form1->Edit2->Text.c_str());
    StrCopy(SendPackage.IP,Form1->Powersock1->LocalIP.c_str());
    gethostname(SendPackage.ComputerName,sizeof(SendPackage.ComputerName));
    StrCopy(SendPackage.TypeMsg, "general");

     sendto(mySocket,(char*)&SendPackage,sizeof(SendPackage),0,(struct sockaddr*)&AdressInfo,AdressInfoSize);

 }

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

void Disconnect() {

  WSACleanup();
   closesocket(mySocket);
 }

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

 void ServerConnect() {

  if (WSAStartup(MAKEWORD(1,0), &wsd) != 0)
   {
     MessageBox(0, "Can't load WinSock", "Error", 0);
   }
    SSocket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
    if (SSocket == INVALID_SOCKET)
     {
        MessageBox(0, "Can't create socket", "Error", 0);
     }
    SAdressInfo.sin_addr.s_addr = inet_addr(Form1->Powersock1->LocalIP.c_str());
        SAdressInfo.sin_family = AF_INET;
        SAdressInfo.sin_port = htons(27001);
        SAdressInfoSize = sizeof(SAdressInfo);

   if (bind(SSocket, (struct sockaddr *)&SAdressInfo,sizeof(SAdressInfo)) == SOCKET_ERROR)
    {
     MessageBox(0, "Can't bind", "Error", 0);
    }
 }

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

void Receive() {

  Package RecvPackage = {0};
  recvfrom(SSocket,(char*)&RecvPackage,sizeof(RecvPackage),0,(struct sockaddr*)&SAdressInfo,&SAdressInfoSize);

     //switch()
      Form1->Memo1->Lines->Add(RecvPackage.Message);
      //Form1->Memo1->Lines->Add(RecvPackage.NickName);
      //Form1->Memo1->Lines->Add(RecvPackage.ComputerName);
      //Form1->Memo1->Lines->Add(RecvPackage.IP);
      //Form1->Memo1->Lines->Add(RecvPackage.TypeMsg);
       SearchInList(RecvPackage);
       DisplayList();
 }

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

DWORD WINAPI ReceiveLoop(LPVOID lParam)
{
 while(true)
  {
   Receive();
  }
}

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

Вот File2.h
Код

#include "Unit1.h"
void SS();

Вот File2.cpp
Код

void SS() {
   int a=0;
};

File1 видит нормально все функции а с File у меня проблемы smile 

Это сообщение отредактировал(а) Sergio - 26.4.2007, 16:29
PM MAIL ICQ   Вверх
Klin
Дата 26.4.2007, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Буду проверять...

p.s. сейчас не помню, если исходный файл File2.cpp, то подключаем File.h?


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
SenkraD
Дата 26.4.2007, 16:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



в File1.cpp проинклудь File1.h и подобное сделай для File2.cpp


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Sergio
Дата 26.4.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

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



SenkraD, не работает всё равно
PM MAIL ICQ   Вверх
Klin
Дата 26.4.2007, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(Klin @  26.4.2007,  17:27 Найти цитируемый пост)
.s. сейчас не помню, если исходный файл File2.cpp, то подключаем File.h? 


Цитата(SenkraD @  26.4.2007,  17:30 Найти цитируемый пост)
 File1.cpp проинклудь File1.h и подобное сделай для File2.cpp 


Это и имелл ввиду, только слова местами перепутал, проверил, так и надо сделать, т.е в файле File1.h пишешь:
Код

#include "File1.cpp"



Цитата(Sergio @  26.4.2007,  17:37 Найти цитируемый пост)
SenkraD, не работает всё равно 

У меня, все как по маслу.  ИМХО накрученные связи.


!!! А SenkraD, тоже наоборот написал  smile  сделай, как я сейчас написал

Это сообщение отредактировал(а) Klin - 26.4.2007, 16:47


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
SenkraD
Дата 26.4.2007, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



нет ))

В File1.cpp делаеш #include "File1.h"
В File2.cpp делаеш #include "File2.h"

Оба cpp-шника добавляеш в проект и всё пашет


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Klin
Дата 26.4.2007, 16:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Я наоборот сделал, тоже работает smile

Добавлено через 2 минуты и 52 секунды
Sergio, а у тебя как?


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
HappyLife
Дата 26.4.2007, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Sergio, 
так
Код

#pragma link "File1.obj"


Или 

Project->Add to project и выбираешь свой файл, 
собственно о чем и пытается сказать многоуважаемый SenkraD
PM MAIL   Вверх
Sergio
Дата 26.4.2007, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 843
Регистрация: 28.7.2006
Где: Solar System-> Earth

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



Klin, У меня теперь проект запускается, но при работе  появляется ошибка smile 

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  __________.JPG 11,42 Kb
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




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


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

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