![]() |
|
|
![]()
|
|
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: нет Всего: 5 |
ну для начала
что имеем: файл *.c и егошный *.h, которые надо использовать в имеющемся проекте. что делаю: 1. в проект включаю *.c 2. в один из .cpp файлов проекта, в котором надо использовать функцию этого *.c, прописываю #include "*.h" 3. в том же .cpp файле вызываю нужную мне функцию что имею на выходе: ошибку линкера error LNK2001: unresolved external symbol на эту самую функцию. ребилдил весь проект уже раза 3. куда копать? что проверять? |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 6 Всего: 118 |
надо явно указывать имя файла, а не маску поиска. кроме того, в случае подключения h файла в cpp у вас он будет восприниматься как С++ заголовок, и без явного указания extern "C" не будет ничего работать -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 87 Всего: 183 |
Да, скорее всего компилятор по умолчанию компилирует файлы с расширением "c" как с-код. А там совсем другие принципы украшения имен (ну то есть формирования имен для линкера). Нужно либо 1) изменить расширение на cpp 2) изменить настройки (можно только для этого файла, чтобы он компилировался как cpp) 3) рассказать cpp-коду, что в том хедере объявлены c-функции (т.е. заключить #include в extern C {}, как уже сказано). Это, кстати, самое правильное, т.к. не всякий c-код скомпилируется в cpp.
-------------------- ... |
|||
|
||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: нет Всего: 5 |
jonie, ну на месте * в коде ессно стоит реальное имя. кстати, если б проблема была в неправильно подключенном хедере - была б ошибка компиляции))))
extern "C" стреляет. благодарю за помощь. Это сообщение отредактировал(а) 17dufa - 25.3.2010, 14:26 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Visual C++/MFC/WTL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |