Поиск:

Ответ в темуСоздание новой темы Создание опроса
> непонятки с билдом 
V
    Опции темы
17dufa
Дата 24.3.2010, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну для начала smile  smile  smile )))
что имеем:
файл *.c и егошный *.h, которые надо использовать в имеющемся проекте.
что делаю:
1. в проект включаю *.c
2. в один из .cpp файлов проекта, в котором надо использовать функцию этого *.c, прописываю #include "*.h"
3. в том же .cpp файле вызываю нужную мне функцию
что имею на выходе: ошибку линкера error LNK2001: unresolved external symbol на эту самую функцию. 
ребилдил весь проект уже раза 3.
куда копать? что проверять?
PM MAIL   Вверх
jonie
Дата 24.3.2010, 17:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

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



Цитата


2. в один из .cpp файлов проекта, в котором надо использовать функцию этого *.c, прописываю #include "*.h"

надо явно указывать имя файла, а не маску поиска.

кроме того, в случае подключения h файла в cpp у вас он будет восприниматься как С++ заголовок, и без явного указания extern "C" не будет ничего работать


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
Earnest
Дата 24.3.2010, 20:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

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



Да, скорее всего компилятор по умолчанию компилирует файлы с расширением "c" как с-код. А там совсем другие принципы украшения имен (ну то есть формирования имен для линкера). Нужно либо 1) изменить расширение на cpp 2) изменить настройки (можно только для этого файла, чтобы он компилировался как cpp) 3) рассказать cpp-коду, что в том хедере объявлены c-функции (т.е. заключить #include в extern C {}, как уже сказано). Это, кстати, самое правильное, т.к. не всякий c-код скомпилируется в cpp.


--------------------
...
PM   Вверх
17dufa
Дата 24.3.2010, 20:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



jonie, ну на месте * в коде ессно стоит реальное имя. кстати, если б проблема была в неправильно подключенном хедере - была б ошибка компиляции))))

extern "C" стреляет. благодарю за помощь.

Это сообщение отредактировал(а) 17dufa - 25.3.2010, 14:26
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Visual C++/MFC/WTL | Следующая тема »


 




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


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

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