| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > как выключить использование неймспейса |
| Автор: Homskiy 15.6.2008, 21:19 | ||||||||||||
| коротко. Есть проект написаный на С, его надо присобачить к проекту который пишется на C++, Builder 5. В проекте, который на С, в одном из хидеров есть строчки объявления типов и функции. Эти типы есесно используются в этом проекте. Но они конфликтуют с неймспесом System:
ошибки:
Здесь - http://forum.vingrad.ru/forum/topic-216551.html - мне посоветовали задать этот вопрос в разделе Билдера, вот и спрашиваю. Как я понял, есть возможность отключить использование неймспейса System по умолчанию. В опциях проєкта ничего похожего не нашел. Я попробовал сделать такое:
и в пустом проекте я добавил
Оно откомпилилось нормально. Но когда я добавил вызов некоторых функций из этого проекта, то получил ошибки линкера примерного такого содержания:
Хоть в параметрах проекта я указал директории либов и инклудов, оно их че-то не увидело... Потом я через Add to Project (shift+F11) добавил все си-шники проекта который я юзаю... После чего появилась ошибка в link-includes.h на строчку
Вот... Надеюсь вы подскажите как сей гемор обойти. ЗЫ: этот проект можно скачать здесь - http://www.link.cs.cmu.edu/link/ а здесь - http://www.link.cs.cmu.edu/link/api/index.html - можно найти простой пример программы с использованием этого проекта, который я пытался скомпелировать... |
| Автор: Lazin 15.6.2008, 21:45 |
| паттерн адаптор тебе поможет... |
| Автор: Homskiy 15.6.2008, 21:58 |
| уу... Не хочу ошибиться, но паттерны это вроде типа шаблоны проектирования... И как оно тут поможет?.. |
| Автор: Lazin 15.6.2008, 22:27 | ||||
| это паттерн, который позволяет преобразовать интерфейс, в данном случае все решается с помощью идиомы pimpl adapter.h
adapter.cpp
потом в программе подключаем adapter.h если не делать интерфейс в виде класса, то можно еще проще, в хэдере объявить функции в срр реализовать их... |
| Автор: Homskiy 16.6.2008, 03:40 | ||||||
| Спасибо, эта ошибка исчезла Теперь линкер матерится неистовым голосом... Мож поможет кто.. ошибка стандартная (Unresolved external symbol referenced from module), только я не пойму че она появляется - вроде все правильно делал. Чужой проект находится в директории D:\asdf\LINKGRAMPARSER\ его хидеры: D:\asdf\LINKGRAMPARSER\include\ и си-шные файлы: D:\asdf\LINKGRAMPARSER\src\ моя прога (с адаптером) находятся тута: D:\asdf\first\ в этом линк-парсере есть один, главный, хидер - link-includes.h (он содержит перечень почти всех хидеров парсера), его я затулил в срр-шный файл адаптера, как в примере. В функцию адаптера затулил то, что мне надо (пример с официального сайта этого парсера), и в основной проге проекта (обычная формочка с кнопкой и лейблом) вызываю эту функцию адаптера :
в настройках проекта (в разделе директорий) я прописал инклуды: D:\asdf\LINKGRAMPARSER\include\ (+ на всяк случай) D:\asdf\LINKGRAMPARSER\src\ и либы: D:\asdf\LINKGRAMPARSER\src\ После этого линкер нифига не нашел. Тоесть к проекту не добавился ни один си-шный файл. Я добавил их через Add to Project. Ситуация тоже не очень поменялась. Открыв класс-эксплорер я смотрю что оно все структуры видит и все функции тоже. Но только декларейшены. А вот реализаций че-то не видит... После этого я прошелся по всем си-шным файлам и там где было
поменял на (ну мож не видит - фиг его знает)
Результат не изменился. Что я не так сделал или что надо еще сделать? Подскажите, плз. |
| Автор: Lazin 16.6.2008, 07:41 |
| нужно либо скомпилировать Си-шную библиотеку в lib и подключить к проекту, либо подключить к проекту все с файлы библиотеки 1-й вариант предпочтительней |
| Автор: Homskiy 17.6.2008, 02:00 |
| фиг. не помогло. Решил запустить под turbo C. Но у того тоже линкер матюкается.. [censored 6], короче. |
| Автор: Homskiy 17.6.2008, 04:15 |
| Ура!! Сделал! Спасибо всем за внимание |