| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Visual C++/MFC/WTL > непонятки с билдом |
| Автор: 17dufa 24.3.2010, 15:44 |
| ну для начала что имеем: файл *.c и егошный *.h, которые надо использовать в имеющемся проекте. что делаю: 1. в проект включаю *.c 2. в один из .cpp файлов проекта, в котором надо использовать функцию этого *.c, прописываю #include "*.h" 3. в том же .cpp файле вызываю нужную мне функцию что имею на выходе: ошибку линкера error LNK2001: unresolved external symbol на эту самую функцию. ребилдил весь проект уже раза 3. куда копать? что проверять? |
| Автор: jonie 24.3.2010, 17:23 | ||
надо явно указывать имя файла, а не маску поиска. кроме того, в случае подключения h файла в cpp у вас он будет восприниматься как С++ заголовок, и без явного указания extern "C" не будет ничего работать |
| Автор: Earnest 24.3.2010, 20:17 |
| Да, скорее всего компилятор по умолчанию компилирует файлы с расширением "c" как с-код. А там совсем другие принципы украшения имен (ну то есть формирования имен для линкера). Нужно либо 1) изменить расширение на cpp 2) изменить настройки (можно только для этого файла, чтобы он компилировался как cpp) 3) рассказать cpp-коду, что в том хедере объявлены c-функции (т.е. заключить #include в extern C {}, как уже сказано). Это, кстати, самое правильное, т.к. не всякий c-код скомпилируется в cpp. |
| Автор: 17dufa 24.3.2010, 20:48 |
| jonie, ну на месте * в коде ессно стоит реальное имя. кстати, если б проблема была в неправильно подключенном хедере - была б ошибка компиляции)))) extern "C" стреляет. благодарю за помощь. |