| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > использовать my.h и my.cpp в CBuilder\Include |
| Автор: W03L 3.9.2007, 06:53 |
| Привет. Проблемка такая: создал свой модуль, кусок кода: my.h #ifndef myH #define myH #include <SysUtils.hpp> //--------------------------------------------------------------------------- void f_msg(AnsiString mess,char kind,HWND h=NULL,AnsiString cap="Ошибка данных"); //--------------------------------------------------------------------------- #endif my.cpp #pragma hdrstop #include "my.h" //--------------------------------------------------------------------------- #pragma package(smart_init) //--------------------------------------------------------------------------- void f_msg(AnsiString mess,char kind,HWND h,AnsiString cap) { UINT mt=0; if (kind=='e') mt=MB_ICONERROR; else if (kind=='w') mt=MB_ICONWARNING; else if (kind=='i') mt=MB_ICONINFORMATION; MessageBox(h,mess.c_str(),cap.c_str(),mt); } //--------------------------------------------------------------------------- Скопировал это в папку builderа Borland\CBuilder6\Include\. Создал новое приложение и там поставил #include <my.h> При запуске он почему-то не находит тело функции f_msg пишет [Linker Error] Unresolved external 'f_msg... хотя компиляция проходит нормально. Подскажите как сделать чтобы можно было юзать MY.H в стандартном пути #include <>? |
| Автор: JackYF 3.9.2007, 07:56 |
эх... это проблема неподключения .cpp - файла. Если бы оно не увидело .h-файл, компилятор ругнулся бы значительно раньше. Добавь .cpp - файл в проект. И .cpp-файлы никто в Include, а тем более системные, не ложит. |
| Автор: vmark 3.9.2007, 08:23 |
| хедер и так прога найдет , она у тебя не видет срр .... добавь его в проект и будет счастье ... |
| Автор: Lazin 3.9.2007, 10:41 |
| Перемести тело ф-ии в заголовочный файл зы как вариант, но такая практика - полнейшая дурь. Свой код не стоит смешивать со стандартными библиотеками, лучше положить в папку с проектом, а то потом запаришся искать, и при переносе проекта на другой комп кой-чего будет нехватать. А реализация кода ф-ии в заголовочном файле повлечёт излишние перекомпиляции при изменении кода. |
| Автор: W03L 4.9.2007, 04:01 |
| Просто у меня многие проекты будут использовать этот модуль. Если хранить его в каждом - это занимает место и если я чего-нибудь изменю в my.h или my.cpp, то везде надо менять, а так он будет в одном месте со стандартным путём. Его надо как-то зарегестрировать в билдере (типа компоненты), но как я не знаю :( |
| Автор: Lazin 4.9.2007, 08:03 | ||
Создай статическую библиотеку, и линкуй ко всем проектам.
6-й билдер создаёт в папке Projects папки Lib и Bpl. Подразумевается, что либы туда будут ложить. PS в vcl есть стандартные диалоги, которые делают примерно то-же что и твой код. PPS Dialogs.hpp |
| Автор: W03L 5.9.2007, 03:34 |
| Сенкс, статическая библиотека нормально работает |