![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Hose |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 11.4.2006 Репутация: 1 Всего: 1 |
Приветствую.
Пишу програму в VS 2003. хочу в своей программе использовать некоторую опенсорсную библиотеку(написанную мною). Библиотека в Си стиле и состоит из 2х фалов: ххх.с и ххх.h Добавляю оба файла в проект. делаю #include "xxx.h". Нажимаю билд. мне выдает:
если изменить имя файла на ххх.cpp или в его свойствах установить Compile as C++ или просто сделать #include xxx.c, то все прекрасно работает. Так вот собственно вопрос почему так? как правильнее подключать Сишные файлы? Спасибо. |
|||
|
||||
Prehistorik |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 146 Регистрация: 30.5.2006 Где: СПб Репутация: 1 Всего: 3 |
Ээээ ... А как ты объявляешь функции в *.c файле?
--------------------
Есть только один бог - Ассемблер, и С - пророк его. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Вoт только #include "xxx.c" не надо делать...
C и С++ функции по разному компилируются (получают разные имена). Когда ты компилируешь c-файл, они, надо полагать, компилируются как C... А main ожидает (ищет) C++ имена. Для начала определись, что тебе нужно: C++ или С. Если тебе все же нужен именно C, опиши функции в h-файле как extern "C". В противном случае либо переименуй файл в .cpp, либо поставь опцию "компилировать как C++" (лучше первое). -------------------- ... |
|||
|
||||
ZeusAtVingrad |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 12.4.2006 Репутация: нет Всего: нет |
Так если один и тот же компилятор в одном и том же проекте компилит разные файлы, то уж разберётся он, наверное, в именах функций-то.
Сдаётся мне, что у него просто при сборке не указан второй объектный файл. ИМХО. |
|||
|
||||
Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 53 Всего: 183 |
Да ну?
Каждая единица компиляции (читай файл) компилируется независимо от других. C-файлы по-умолчанию компилируются как С. А еще бывает ASM, RC, ... а также своих файлов и компилаторов к ним навешать можно. Среда с ними разбирается обычно на основе расширения и\или опций. -------------------- ... |
|||
|
||||
ZeusAtVingrad |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 82 Регистрация: 12.4.2006 Репутация: нет Всего: нет |
А, ну да - это я пропустил.
Просто со "средами" я с универа не работаю, всё как-то больше makefile'ами. Это сообщение отредактировал(а) ZeusAtVingrad - 6.6.2006, 20:25 |
|||
|
||||
Hose |
|
|||
Новичок Профиль Группа: Участник Сообщений: 29 Регистрация: 11.4.2006 Репутация: 1 Всего: 1 |
Всем cпасибо.
Сделал
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |