Форум: "Потрепаться";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
ВнизНеужели я так плохо знаю C++, или как это можно объяснить? Найти похожие ветки
← →
ms (2004-12-18 10:22) [0]// Файл ttt.h
//
#ifndef TTT_H
#define TTT_H
class TTT {
public:
void myFunc();
int l;
private:
double c;
};
#endif
// Файл ttt.cpp
//
#include "ttt.h"
void TTT::myFunc()
{
c = 26.9;
}
// MainDlg.h : header file
//
#pragma once
#include "afxcmn.h"
#include "afxwin.h"
#include <afxmt.h>
#include "ttt.h"
<...>
// MainDlg.cpp : implementation file
//
#include "stdafx.h"
#include "RenamerWizard.h"
#include "MainDlg.h"
Далее в этом модуле в каком-нибудь обработчике пишу:
TTT my;
my.l = 77;
my.myFunc();
-----------------
Результат компиляции:
-----------------
RenamerWizard error LNK2019: unresolved external symbol "public: void __thiscall TTT::myFunc(void)" (?myFunc@TTT@@QAEXXZ) referenced in function "public: __thiscall CMainDlg::CMainDlg(class CWnd *)" (??0CMainDlg@@QAE@PAVCWnd@@@Z)
RenamerWizard fatal error LNK1120: 1 unresolved externals
Ну в чем здесь может быть ошибка? Мой проект mfc приложения на VC++.NET
← →
KSergey © (2004-12-18 10:43) [1]Просто предположение:
Файл ttt.cpp не включен в проект
← →
Ломброзо © (2004-12-18 10:43) [2]Вставьте #include "stdafx.h" в ваш TTT.cpp
если не поможет, попробуйте не забыть написать для TTT public-конструктор
← →
ms (2004-12-18 10:49) [3]Нельзя мне включать файл в проект, потому что одна функция(WaitForSingleObject, а то что выше это просто пример) работает неправильно если я включу файл в проект. Можно ли не включая в проект этот файл избавиться от такой ошибки?
← →
Ломброзо © (2004-12-18 10:57) [4]теоретически можно. А вообще, похоже, что компилятор просто ваш .cpp не видит. Включите директорию, где он лежит, в include path.
← →
KSergey © (2004-12-18 11:32) [5]> [4] Ломброзо © (18.12.04 10:57)
> теоретически можно. А вообще, похоже, что компилятор просто
> ваш .cpp не видит.
Дык и я о том же.
> [3] ms (18.12.04 10:49)
> Нельзя мне включать файл в проект,
Т.е. это как?? Как-то мне не совсем понятно: либо файл и вписанное в него - будут в проекте и будут использоваться - либо нет.
А как именно - прописать пути (а есть ли это для файлов проекта? Чей-то я сомневаюсь, это же не дельфи) или включить в проект - код из этого модуля либо будет - либо нет. Если нет - то и использовать ничего нельзя.
А потому что-то я не пойму вашей проблемы.
← →
ASMer (2004-12-18 11:32) [6]Засунь тело ксласса в h файл
← →
KSergey © (2004-12-18 11:35) [7]> [6] ASMer (18.12.04 11:32)
> Засунь тело ксласса в h файл
Зачем?
← →
begin...end © (2004-12-18 11:36) [8]> [7] KSergey © (18.12.04 11:35)
> > Засунь тело ксласса в h файл
>
> Зачем?
За сунь :-)
← →
ASMer (2004-12-18 11:39) [9]Так нада!
← →
KSergey © (2004-12-18 11:49) [10]> [9] ASMer (18.12.04 11:39)
> Так нада!
Обман.
← →
Verg © (2004-12-18 11:54) [11]ну напиши так что ли...
class TTT {
public:
void myFunc() { c = 26.9; }
int l;
private:
double c;
};
← →
ASMer (2004-12-18 11:58) [12]Короче мля самый короткий путь для того чтобы засунуть
функциональность какую то в проект VS и приэтом не включать cpp
файл в проект это засунуть эту же функциональность в h файл
а cpp выкинуть на...
Я лично встречал несколько интересных библиотек сотстоящих
из одного h файла(вариация на тему Zip и XML парсер). Очень удобно так как нет никагоко гемора при работе с этой библиотекой как в VS так и g++
← →
KSergey © (2004-12-18 12:03) [13]А все же, мне любопытно: почему нельзя запихнуть cpp в проект и что изменится, если всю его функциональность перенести в h? Какая в итоге разница - где лежит исходник?? Вот что я не пойму...
← →
ASMer (2004-12-18 12:15) [14]2KSergey
Во 1-x Запихнуть можно все...
Во 2-x Ни.. чего не измениться...
Компилисться может будет дольше
В 3-x Если cpp файл не включен в проект он нескомпилиться НИКОГДА
в отличии от h.
а разници где лежит исходник нет.
Могу токак заметить по своему опыту что лучше импользовать в проекте отностительные пути, а не абсолютные.
← →
KSergey © (2004-12-18 12:20) [15]> [14] ASMer (18.12.04 12:15)
Но как же тогда быть с [3] ms (18.12.04 10:49)?? Если в тексте какие-то проблемы -какая разница куда его запихать? Вот что мне не понятно...
← →
ASMer (2004-12-18 12:24) [16]Да мля там явно не проекте дело
Не может WaitForSingleObject работать не правильно из-за того что включен файл в проект.
А насчет продлагаемого мной пути. Так он не включает h файл в проект. Вот!
← →
KSergey © (2004-12-18 12:43) [17]> [16] ASMer (18.12.04 12:24)
> А насчет продлагаемого мной пути. Так он не включает h файл
> в проект.
Да безусловно, но код-то - все равно включает. Если в коде проблемы - какая разница?
Впрочем, это не важно, думаю ;)
← →
марсианин © (2004-12-18 12:47) [18]
> потому что одна функция(WaitForSingleObject, а то что выше
> это просто пример) работает неправильно....
а какие проблемы с WaitForSingleObject?
← →
Igorek © (2004-12-18 13:38) [19]KSergey © (18.12.04 12:03) [13]
и что изменится, если всю его функциональность перенести в h? Какая в итоге разница - где лежит исходник??
- инкапсуляция
- скорость компиляции
ms (18.12.04 10:22)
> Результат компиляции:...
Читайте доки - они рулез.
← →
KSergey © (2004-12-18 14:22) [20]> [19] Igorek © (18.12.04 13:38)
> KSergey © (18.12.04 12:03) [13]
> и что изменится, если всю его функциональность перенести
> в h? Какая в итоге разница - где лежит исходник??
> - инкапсуляция
При чем тут это? Хотя ладно, подумаю еще, мож. и правда что недогоняю...
А вообще, я этот вопрос задавал исключительно в разрезе вопроса автора, а не "вообще чем отличается исходник в .h и в .cpp" ;)
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2005.01.09;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.035 c