Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 24, средняя оценка - 4.79
Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 173
#1

Ошибка `undefined reference to` - C++

30.01.2013, 12:42. Просмотров 4063. Ответов 29
Метки нет (Все метки)

Выскакивает вот такая вот ошибка:
undefined reference to ?Подскажите, пожалуйста, как это исправить?
И еще рядом с file.h находится file.lib
Может ли эта ошибка возникать из-за не подключенного файла библиотеки( *.lib ) или *.dll?
ps
Я впервые сталкиваюсь с подобного рода ошибками...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.01.2013, 12:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка `undefined reference to` (C++):

Странная ошибка: [Linker error] undefined reference to `__dyn_tls_init_callback' [Linker error] undefined reference to ld returned 1 exit status - C++
Здравствуйте. Вот недавно начал изучать книгу "С++ для чайников" Стефан Р. Девис 4-е издание. И напоролся на кучу ошибок) Но смог все...

Ошибка undefined reference to - C++
main.cpp #include <locale> #include <iostream> #include <Windows.h> #include "Class.h" using namespace std; int main() { ...

Ошибка undefined reference to - C++
Взял пример из учебника С++ изнутри (Вайнер), но при попытке скомпилировать программу, возникают ошибки (gcc компилятор) ...

Ошибка undefined reference to - C++
При сборке выбивает ошибку: undefined reference to `Atom:: DoBCC(float, int, int, int)'. Ткните носом, пожалуйста, где ошибка. Заранее...

Ошибка undefined reference - C++
Вот такая функция: void InitFMOD(){ FMOD_RESULT result; FMOD::System *system; result =...

Ошибка: undefined reference to `libssh2_session_init_ex' - C++
Взял пример программы работающей с libssh2 /* * File: main.cpp * Author: Gabriele Baldoni * * Created on...

29
Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 173
01.02.2013, 10:46  [ТС] #16
библиотека по умолчанию "LIBCMT" противоречит использованию других библиотек
Решил этот вопрос вариантом предложенным Croessmah, кстати, в режиме Relese подобной ошибки не возникало.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Dimmak, сбрось проект поправлю
http://www.dspdimension.com/download/
Pitch Shifting using the Fourier Transform – Source Code & Download example project
0
-=ЮрА=-
Заблокирован
Автор FAQ
01.02.2013, 10:56 #17
Dimmak, всё сосбралось хоть и с ворнингами
Deleting intermediate files and output files for project 'smbPitchShift - Win32 Release'.
--------------------Configuration: smbPitchShift - Win32 Release--------------------
Compiling...
callSmbPitchShift.cpp
C:\Documents and Settings\Root\Ðàáî÷èé ñòîë\smbPitchShiftProject\smbPitchShiftProject\smbPitchShift-Windows\callSmbPitchShift.cpp(30) : warning C4244: 'initializing' : conversion from 'double' to 'float', possible loss of data
C:\Documents and Settings\Root\Ðàáî÷èé ñòîë\smbPitchShiftProject\smbPitchShiftProject\smbPitchShift-Windows\callSmbPitchShift.cpp(62) : warning C4244: 'argument' : conversion from 'int' to 'float', possible loss of data
smbPitchShift.cpp
C:\Documents and Settings\Root\Ðàáî÷èé ñòîë\smbPitchShiftProject\smbPitchShiftProject\smbPitchShift-Windows\smbPitchShift.cpp(113) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
C:\Documents and Settings\Root\Ðàáî÷èé ñòîë\smbPitchShiftProject\smbPitchShiftProject\smbPitchShift-Windows\smbPitchShift.cpp(135) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
C:\Documents and Settings\Root\Ðàáî÷èé ñòîë\smbPitchShiftProject\smbPitchShiftProject\smbPitchShift-Windows\smbPitchShift.cpp(141) : warning C4244: '=' : conversion from 'double' to 'long', possible loss of data
C:\Documents and Settings\Root\Ðàáî÷èé ñòîë\smbPitchShiftProject\smbPitchShiftProject\smbPitchShift-Windows\smbPitchShift.cpp(153) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
C:\Documents and Settings\Root\Ðàáî÷èé ñòîë\smbPitchShiftProject\smbPitchShiftProject\smbPitchShift-Windows\smbPitchShift.cpp(154) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
C:\Documents and Settings\Root\Ðàáî÷èé ñòîë\smbPitchShiftProject\smbPitchShiftProject\smbPitchShift-Windows\smbPitchShift.cpp(163) : warning C4244: '=' : conversion from 'float' to 'long', possible loss of data
C:\Documents and Settings\Root\Ðàáî÷èé ñòîë\smbPitchShiftProject\smbPitchShiftProject\smbPitchShift-Windows\smbPitchShift.cpp(191) : warning C4244: '+=' : conversion from 'double' to 'float', possible loss of data
C:\Documents and Settings\Root\Ðàáî÷èé ñòîë\smbPitchShiftProject\smbPitchShiftProject\smbPitchShift-Windows\smbPitchShift.cpp(195) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
C:\Documents and Settings\Root\Ðàáî÷èé ñòîë\smbPitchShiftProject\smbPitchShiftProject\smbPitchShift-Windows\smbPitchShift.cpp(196) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
C:\Documents and Settings\Root\Ðàáî÷èé ñòîë\smbPitchShiftProject\smbPitchShiftProject\smbPitchShift-Windows\smbPitchShift.cpp(208) : warning C4244: '+=' : conversion from 'double' to 'float', possible loss of data
C:\Documents and Settings\Root\Ðàáî÷èé ñòîë\smbPitchShiftProject\smbPitchShiftProject\smbPitchShift-Windows\smbPitchShift.cpp(258) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
C:\Documents and Settings\Root\Ðàáî÷èé ñòîë\smbPitchShiftProject\smbPitchShiftProject\smbPitchShift-Windows\smbPitchShift.cpp(259) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
C:\Documents and Settings\Root\Ðàáî÷èé ñòîë\smbPitchShiftProject\smbPitchShiftProject\smbPitchShift-Windows\smbPitchShift.cpp(260) : warning C4244: '=' : conversion from 'double' to 'float', possible loss of data
Linking...
LINK : warning LNK4098: defaultlib "LIBCMT" conflicts with use of other libs; use /NODEFAULTLIB:library

smbPitchShift.exe - 0 error(s), 16 warning(s)
в чём проблема?
0
Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 173
01.02.2013, 11:12  [ТС] #18
1>smbPitchShift.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl smbFft(float *,long,long)" (?smbFft@@YAXPAMJJ@Z) в функции "void __cdecl smbPitchShift(float,long,long,long,float,float *,float *)" (?smbPitchShift@@YAXMJJJMPAM0@Z)
1>.\Release/smbPitchShift.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
Это в Vs 2008
Ошибка 15 error LNK2026: небезопасный модуль для образа SAFESEH. C:\0\AIFF\PitchShiftWindows_E\MiniAiffMSVC.lib(miniAIFF.obj) smbPitchShift
Ошибка 16 error LNK1281: Не удается создать образ SAFESEH. C:\0\AIFF\PitchShiftWindows_E\Release\smbPitchShift.exe smbPitchShift
Это в Vs 2012
0
-=ЮрА=-
Заблокирован
Автор FAQ
01.02.2013, 11:13 #19
Еденственное что сделал - в том проекте убрал ворнинги, которые сам автор же и наплодил.
А вот этого лучше не делать
LINK : warning LNK4098: defaultlib "LIBCMT" conflicts with use of other libs; use /NODEFAULTLIB:library
На сим не вижу дальнейшего предмета обсуждения - код тамошний писан в VS6.0 и линковать его спокойно можно - всё собирается.
0
Миниатюры
Ошибка `undefined reference to`   Ошибка `undefined reference to`  
Вложения
Тип файла: rar callSmbPitchShift.exe.rar (29.3 Кб, 4 просмотров)
Тип файла: rar smbPitchShift_VS6.0_project.rar (530.0 Кб, 7 просмотров)
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
01.02.2013, 11:14 #20
Цитата Сообщение от Dimmak Посмотреть сообщение
Это в Vs 2012
параметр компоновщика /SAFESEH:NO уберет сие чудо
0
-=ЮрА=-
Заблокирован
Автор FAQ
01.02.2013, 11:19 #21

Не по теме:

Цитата Сообщение от Dimmak Посмотреть сообщение
Это в Vs 2008
Ошибка 15 error LNK2026: небезопасный модуль для образа SAFESEH. C:\0\AIFF\PitchShiftWindows_E\MiniAiffMSVC.lib(miniAIFF.obj) smbPitchShift
Ошибка 16 error LNK1281: Не удается создать образ SAFESEH. C:\0\AIFF\PitchShiftWindows_E\Release\smbPitchShift.exe smbPitchShift
Это в Vs 2012
- Вечером смогу сделать в 2008-й (2012-ц у меня нет). ИМХО поставь себе VS 6.0 и не ищи на одно место приключений, тамошние коды писаны под 6-ку, которая спокойно линкует и на Win7.



Добавлено через 4 минуты
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
PitchShiftWindows_E
- это твоё имя проекта, стало быть СВОЙ проект покажи!

Цитата Сообщение от Dimmak Посмотреть сообщение
smbPitchShift.exe
- тот срр это не приложение, я понял что ты делаешь. ОМГ там же написано
SYNOPSIS: Routine for doing pitch shifting while maintaining
* duration using the Short Time Fourier Transform.
*
- это ну хочешь простым языком - файл с прототипами функций. Проект надо открывать через dsw файл а если с нуля хотим то главный код в callsmbPitchShift.cpp (проект надо скачивать)

/* *********************************************************************************

EXAMPLE main() for smbPitchShift using MiniAiff to handle sound file i/o
(c) 2003-2009 S. M. Bernsee, http://www.dspdimension.com

IMPORTANT: requires miniAIFF to be included in the project

********************************************************************************* */

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include "MiniAiff.h"



void smbPitchShift(float pitchShift, long numSampsToProcess, long fftFrameSize, long osamp, float sampleRate, float *indata, float *outdata);


int main(void)
{
- В НЁМ МЭЙН ЛЕЖИТ ЖЕ!!!
0
Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 173
01.02.2013, 11:21  [ТС] #22
Цитата Сообщение от Croessmah Посмотреть сообщение
параметр компоновщика /SAFESEH:NO уберет сие чудо
Да убрал, но появились еще 2:
Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl smbFft(float *,long,long)" (?smbFft@@YAXPAMJJ@Z) в функции "void __cdecl smbPitchShift(float,long,long,long,float,float *,float *)" (?smbPitchShift@@YAXMJJJMPAM0@Z) C:\0\AIFF\PitchShiftWindows_E\smbPitchShift.obj smbPitchShift
Ошибка 2 error LNK1120: неразрешенных внешних элементов: 1 C:\0\AIFF\PitchShiftWindows_E\Release\smbPitchShift.exe smbPitchShift
0
-=ЮрА=-
01.02.2013, 11:21
  #23

Не по теме:

Dimmak, давай свой проект, я уверен ты не скачал проект либо скачал и запустил на линковку smbPitchShift.cpp (короче не то ты линкуешь парень)

0
Croessmah
Ушел
Эксперт CЭксперт С++
13553 / 7704 / 872
Регистрация: 27.09.2012
Сообщений: 19,006
Записей в блоге: 3
Завершенные тесты: 1
01.02.2013, 11:24 #24
Цитата Сообщение от Dimmak Посмотреть сообщение
Да убрал, но появились еще 2:
Все без проблем линкуется (VS 2012)
Ошибка `undefined reference to`


Не по теме:

скриншот, чтобы не говорили, что мы врем всё

0
Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 173
01.02.2013, 12:03  [ТС] #25
-=ЮрА=-,
Croessmah,
скриншот, чтобы не говорили, что мы врем всё
Я даже не сомневаюсь в том, что вы говорите правду. И понятное дело, проект рабочий. Просто именно у меня не получается его запустить в силу того, что я не знаю как нужно правильно настроить visual studio или вообще делаю что-то не то что нужно...
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Dimmak, давай свой проект, я уверен ты не скачал проект либо скачал и запустил на линковку
Сейчас это и есть мой проект.
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
(короче не то ты линкуешь парень)
Даже не знаю... Может и так. Правый клик на файле проэкта >> построение или F7

Добавлено через 19 минут
-=ЮрА=- спасибо огромное!
Запустил VS6 - все работает! Когда я открывал в VS 2008 и 2012 программа сообщает о том, что файлы проекта будут изменены для совместимости. Может с этим связано??? Понятия не имею почему и vs 2008 и 2012 выдают ошибки. Переустановлю...
0
-=ЮрА=-
Заблокирован
Автор FAQ
01.02.2013, 12:13 #26
Dimmak, смотри поэтапно как собрать экзе из проекта который по твоей ссылке(аналогично собирается уже мой доработанный проект из поста 19)
Так вот
1-е открыл папку с проектом и выбрал этот файл(НИЧЕГО ДРУГОГО!)
2-е если ты открыл в 6-ке то нажми Rebuid Project (Перестроить проект)
2.1 - если открываешь в 9-й-11-й студиях то будет появляться менеджер конвертирования проекта, просто покликай ок в сех тех окнах конвертирования и откажись от просмотра лога.
далее поступай также МЕНЮ:Project(Проект) и пункт RebuildAll(пересроить проект)
3 - юзай получиненный exe

Не по теме:

(Делай всё только на свежескачанном проекте, т.к тот что у тебя сейчас ты уже мог угробить своими линковками)

1
Миниатюры
Ошибка `undefined reference to`   Ошибка `undefined reference to`  
-=ЮрА=-
01.02.2013, 12:15
  #27

Не по теме:

Цитата Сообщение от Dimmak Посмотреть сообщение
-=ЮрА=- спасибо огромное!
Запустил VS6 - все работает! Когда я открывал в VS 2008 и 2012 программа сообщает о том, что файлы проекта будут изменены для совместимости. Может с этим связано??? Понятия не имею почему и vs 2008 и 2012 выдают ошибки. Переустановлю...
- не за что, когда Я писал пост выше - этого твоего сообщения ещё не видел.
Далее - переустанавливать ничего не надо! Во-первых если у тебя были экспрески - то они могли банально не слинковать, второе - вечером посмотрю что же такого пишет 9-ка. В любом случае во всех версиях НАДО ПЕРЕСТРАИВАТЬ ПРОЕКТ REBUILD т.е.

0
Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 173
02.02.2013, 02:06  [ТС] #28
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
Во-первых если у тебя были экспрески - то они могли банально не слинковать
Да, и VS9 и VS11 - были экспрески, но даже после того как я удалил VS9 экспресс и установил VS9 PRO выскакивают те же ошибки:
1>smbPitchShift.obj : error LNK2019: ссылка на неразрешенный внешний символ "void __cdecl smbFft(float *,long,long)" (?smbFft@@YAXPAMJJ@Z) в функции "void __cdecl smbPitchShift(float,long,long,long,float,float *,float *)" (?smbPitchShift@@YAXMJJJMPAM0@Z)
1>.\Release/smbPitchShift.exe : fatal error LNK1120: 1 неразрешенных внешних элементов
Дело в том, что я устанавливал VS9 на разные диски, те часть установочных файлов на диск 'C', а остальное на 'E'. Из-за этого могут возникать подобные ошибки?
0
-=ЮрА=-
Заблокирован
Автор FAQ
02.02.2013, 02:50 #29
Dimmak, вот писал тебе писал
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
- не друг собирается код везде, просто уметь надо компилятор настроить. Запомни если собралось в 6-ке на остальных версиях в любом случае должно осбираться, максимум прийдётся поправить типы, ибо новые версии геморны к повышающим преобразованиям типов и всё + люд не уммет иногда переставить с юникода на широкие символы.
и так ты и не понял что это значило.
Вот тебе рабочий проект и забудем о нём на всегда(там и код и экзеха)...

Не по теме:

PS:Dimmak, основные твои недостаки как прогера пока что - не читаешь, что пишут люди с опытом либо не вникаешь, а самый печальный - дебагом вообще не пользуешся. Тебе срочно нужно почитать литературку по работе в студии ИМХО

1
Миниатюры
Ошибка `undefined reference to`   Ошибка `undefined reference to`  
Вложения
Тип файла: rar smbPitchShift_VS9.0-6.0_project.rar (595.8 Кб, 8 просмотров)
Dimmak
4 / 4 / 0
Регистрация: 10.12.2012
Сообщений: 173
02.02.2013, 04:17  [ТС] #30
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
максимум прийдётся поправить типы, ибо новые версии геморны к повышающим преобразованиям типов
Изначальна была ошибка - вызов перегруженной функции. Я ее исправил, и после этого появились другие:
1Неразрешенный внешний символ и 2неразрешенный внешний элемент. Причем если по отдельности компилировать *.cpp файл, то никаких ошибок не возникало.
И только теперь до меня дошло, что эти две ошибки возникали из-за преобразования типов.
Я то по собственной наивности полагал что будет явное указание на ошибку( как в случае с перегруженной 'log' )
если таковая присутствует в коде.
Спасибо -=ЮрА=- в очередной раз. Твоя помощь мне помогла очень сильно.
0
02.02.2013, 04:17
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2013, 04:17
Привет! Вот еще темы с ответами:

Ошибка Dev C++ undefined reference - C++
Подскажите пожалуйста, при компиляции программы выдает ошибки: undefined reference to '_streams'. Как исправить? Заранее спасибо!

Ошибка: undefined reference to `WinMain@16' - C++
Подскажите пожалуйста, что означает эта ошибка и как от нее озбавиться: Linking... ...

Ошибка undefined reference to `main` - C++
Такая ошибка: /build/glibc-ryFjv0/glibc-2.21/csu/../sysdeps/x86_64/start.S|114|undefined reference to `main'| ||=== Build failed: 1...

Ошибка undefined reference to `lpddsback' - C++
ну здраствуйте, начну свой рассказ с того что я начал изучать си++, и решил делать дипломку по нему, нашел книгу по созданию игр под винду...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru