ошибка: collect2: error: ld returned 1 exit status
Работаю через QT Creator. Создал проект, назвал test.
1) Скачал библиотеку curl
2) Скопировал из распакованного архива библиотеки curl все файлы из папки /home/n199a/curl/include/ в папку /usr/include/curl
n199a@n199a:~$ ls /usr/include/curl curl.h easy.h Makefile.in multi.h system.h curlver.h Makefile.am mprintf.h stdcheaders.h typecheck-gcc.h
3) В файл test.pro проекта дописал:
LIBS += -lcurl
4) Пытаюсь скомпилировать и выдается ошибка:
ошибка: collect2: error: ld returned 1 exit status
У меня Linux Mint. В ней по умолчанию предустановлена библиотека curl, но почему её не было в папке /usr/include/ ? Сам код программы:
//подключаем необходимые заголовочные файлы #include #include #include //подключаем стандартное пространство имен using namespace std; //объявляем буфер, для хранения возможной ошибки, размер определяется в самой библиотеке static char errorBuffer[CURL_ERROR_SIZE]; //объялвяем буфер принимаемых данных static string buffer; //функция обратного вызова static int writer(char *data, size_t size, size_t nmemb, string *buffer) < //переменная - результат, по умолчанию нулевая int result = 0; //проверяем буфер if (buffer != NULL) < //добавляем к буферу строки из data, в количестве nmemb buffer->append(data, size * nmemb); //вычисляем объем принятых данных result = size * nmemb; > //вовзращаем результат return result; > //главная функция int main(void) < //необходимые CURL объекты CURL *curl; CURLcode result; //инициализируем curl curl = curl_easy_init(); //проверяем результат инициализации if (curl) < //задаем все необходимые опции //определяем, куда выводить ошибки curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, errorBuffer); //задаем опцию - получить страницу по адресу http://google.com curl_easy_setopt(curl, CURLOPT_URL, "google.com"); //указываем прокси сервер curl_easy_setopt(curl, CURLOPT_PROXY, "proxy:8080"); //задаем опцию отображение заголовка страницы curl_easy_setopt(curl, CURLOPT_HEADER, 1); //указываем функцию обратного вызова для записи получаемых данных curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, writer); //указываем куда записывать принимаемые данные curl_easy_setopt(curl, CURLOPT_WRITEDATA, &buffer); //запускаем выполнение задачи result = curl_easy_perform(curl); //проверяем успешность выполнения операции if (result == CURLE_OK) //выводим полученные данные на стандартный вывод (консоль) cout //завершаем сессию curl_easy_cleanup(curl); return 0; >
«[Error] ld returned 1 exit status» постоянно, от разных реализаций функций, делающих скрин
Понадобилась функция, делающая скриншот в программе и сохраняющая его в файл. Я нашёл несколько таких функций, но каждая (!) из них при добавлении в программу заставляет её выдавать при компиляции вот такую ошибку: C:\<папка_с_файлом.cpp>\collect2.exe [Error] ld returned 1 exit status Причём других ошибок нет, или я их исправляю. Обычно такая ошибка происходит, когда у меня код уже скомпилирован и запущен .exe, и я пытаюсь ещё раз его скомпилировать и запустить. Но, разумеется, я всё перепробовал, даже запускал код на другом компе (но тоже в Dev) — такая же ошибка. Если убрать эту функцию, то код снова нормально работает. Подскажите, что делать? Вот текущий код с одним из вариантов функции, делающий скриншот:папка_с_файлом.cpp>
#include //Ws2_32.lib #include #include #include #include #include #include //getch #include #include #include #include #include //#include #define ever (;;) #include #pragma comment(lib, "GdiPlus.lib") //Тут всякий другой код. Вообще, программа для работы с сетью (это клиент). //Но она даже не запускается, выдаёт ту ошибку. using namespace std; using namespace Gdiplus; static const GUID png = < 0x557cf406, 0x1a04, 0x11d3, < 0x9a, 0x73, 0x00, 0x00, 0xf8, 0x1e, 0xf3, 0x2e >>; int PrtScr() < GdiplusStartupInput gdiplusStartupInput; ULONG_PTR gdiplusToken; GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); HDC scrdc, memdc; HBITMAP membit; scrdc = GetDC(0); int Height, Width; Height = GetSystemMetrics(SM_CYSCREEN); Width = GetSystemMetrics(SM_CXSCREEN); memdc = CreateCompatibleDC(scrdc); membit = CreateCompatibleBitmap(scrdc, Width, Height); SelectObject(memdc, membit); BitBlt(memdc, 0, 0, Width, Height, scrdc, 0, 0, SRCCOPY); HBITMAP hBitmap; hBitmap =(HBITMAP) SelectObject(memdc, membit); Gdiplus::Bitmap bitmap(hBitmap, NULL); char PerMin[12]; strcpy (PerMin,"screen.png" ); bitmap.Save((WCHAR*)PerMin, &png,NULL); DeleteObject(hBitmap); return 0; >///////////////////////////////////////////////////// int main() < printf ("OK1\n"); getch(); PrtScr(); printf ("OK2\n"); getch(); //Тут всякий иной код return 0; >
Отслеживать
23.8k 3 3 золотых знака 47 47 серебряных знаков 61 61 бронзовый знак
задан 10 мая 2015 в 21:40
71 1 1 золотой знак 2 2 серебряных знака 4 4 бронзовых знака
Полный лог сборки, думаю, поможет лучше понять что же у вас происходит.
11 мая 2015 в 7:47
А не забыли ли вы подлинковать Ws2_32.lib?
11 мая 2015 в 15:14
@VladD, а это разве может являться причиной? Ведь это библиотеки, которые относятся к советам, но никак не к получению скриншота
11 мая 2015 в 20:03
@Владимир: Ну, у вас же есть #include
11 мая 2015 в 20:05
Столкнулся с подобной проблемой. Оказалось , что в секции private slots указан несуществующий обработчик события. Это стало возможным после переименования кнопки.
Arduino.ru
Ошибка при компиляции скетча «collect2.exe: error: ld returned 1 exit status»
- Войдите на сайт для отправки комментариев
19 ответов [Последнее сообщение]
Чт, 08/09/2016 — 14:13
Зарегистрирован: 08.09.2016
Образовалась одна проблема:
Если в коде использовать процедуру Tin();, то возникает ошибка:
C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s: Assembler messages: C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:157: Error: unknown opcode `delay2' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:196: Error: unknown opcode `delay1' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:198: Error: unknown opcode `delay2' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:201: Error: unknown opcode `delay2' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:204: Error: unknown opcode `delay2' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:207: Error: unknown opcode `delay2' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:210: Error: unknown opcode `delay2' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:213: Error: unknown opcode `delay1' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:218: Error: unknown opcode `delay1' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:221: Error: unknown opcode `delay3' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:254: Error: unknown opcode `svprt' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:258: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:262: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:263: Error: unknown opcode `delay2' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:265: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:266: Error: unknown opcode `delay2' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:268: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:269: Error: unknown opcode `delay2' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:271: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:272: Error: unknown opcode `delay2' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:274: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:275: Error: unknown opcode `delay2' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:277: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:278: Error: unknown opcode `delay1' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:281: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:283: Error: unknown opcode `delay1' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:285: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:286: Error: unknown opcode `svprt' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:288: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:320: Error: unknown opcode `svprt' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:324: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:327: Error: unknown opcode `delay1' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:329: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:330: Error: unknown opcode `delay3' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:332: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:333: Error: unknown opcode `delay3' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:335: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:336: Error: unknown opcode `delay3' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:338: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:339: Error: unknown opcode `delay3' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:341: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:342: Error: unknown opcode `delay3' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:344: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:345: Error: unknown opcode `delay3' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:347: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:350: Error: unknown opcode `delay2' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:352: Error: unknown opcode `o1bs' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:353: Error: unknown opcode `svprt' C:\Users\FDE7~1\AppData\Local\Temp\ccYndXXD.s:355: Error: unknown opcode `o1bs' lto-wrapper: C:\Users\Миха\AppData\Local\Arduino15\packages\arduino\tools\avr-gcc\4.9.2-atmel3.5.3-arduino2/bin/avr-gcc returned 1 exit status c:/users/миха/appdata/local/arduino15/packages/arduino/tools/avr-gcc/4.9.2-atmel3.5.3-arduino2/bin/../lib/gcc/avr/4.9.2/../../../../avr/bin/ld.exe: lto-wrapper failed collect2.exe: error: ld returned 1 exit status exit status 1 Ошибка компиляции.
Если же закомментить вызов данной процедуры, то все нормально компилируется.
arduino uno(CH340G), Ide 1.6.7, Win 10
#include #include #include SoftwareSerial mySerial(10, 11); // RX, TX TVout TV; /* struct weather_structure < const char* descript; float temp; float pressureHPA; float pressureMMHG; byte humidity; float speed; float deg; >; */ //weather_structure weather; String weather[7]; String Data; char DataChar; bool DataBool = false; bool writer = false; void Tin() < /* Data = weather[i]; for (int z = 0; z < Data.length(); z++) TV.print(Data[z]); */ >void writeData() < if (writer == false) < Serial.println(Data); writer = true; TV.clear_screen(); Serial.println("Weather"); TV.select_font(font8x8); TV.println("Weather"); TV.select_font(font4x6); TV.delay(2000); TV.clear_screen(); Serial.print("description: "); Serial.println(weather[0]); TV.print("description: "); Tin();//ТОТ САМЫЙ ВЫЗОВ TV.println(); Serial.print("temp: "); Serial.print(weather[1]); Serial.println(" celsius"); TV.print("temp: "); //TVprint(1); TV.println(" celsius"); Serial.print("humidity: "); Serial.println(weather[2]); TV.print("humidity: "); //TVprintln(weather[2]); Serial.print("pressure: "); Serial.print(weather[3]); Serial.print(" hPa or "); Serial.print(weather[4]); Serial.println(" mmHg"); TV.print("pressure: "); //TVprint(weather[3]); TV.print(" hPa or "); //TVprint(weather[4]); TV.println(" mmHg"); Serial.print("wind's speed: "); Serial.print(weather[5]); Serial.println(" kmph"); TV.print("wind's speed: "); //TVprint(weather[5]); TV.println(" kmph"); Serial.print("wind's direction: "); Serial.print(weather[6]); Serial.println(" degrees"); TV.print("wind's direction: "); //TVprint(weather[6]); TV.println(" degrees"); >> void setup() < // Open serial communications and wait for port to open: delay(1000); Serial.begin(9600); while (!Serial) < ; // wait for serial port to connect. Needed for native USB port only >// set the data rate for the SoftwareSerial port mySerial.begin(9600); TV.begin(NTSC, 120, 96); TV.select_font(font8x8); TV.println("Weather Loading"); TV.select_font(font4x6); > void loop() < // run over and over if (mySerial.available()) < while (DataChar != '#') < DataChar = (char)mySerial.read(); if (DataBool == true) Data = Data + DataChar; else if (DataChar == '!') DataBool = true; >int j = 2; for (int i = 0; i < 7; i++) < while (Data[j] != '&') < weather[i] = weather[i] + Data[j]; j++; >j++; > writeData(); > >
Программа получает инфу с esp через softSerial, разбирает её и должна вывести на монитор
- Войдите на сайт для отправки комментариев
Из за чего появляется ошибка ошибка ld returned 1 exit status?
Ну вот. У вас функция processingArray объявлена, но нигде не реализована. Тело функции где? Поскольку вы ее объявили, компилятор это безобразие проглатил и понадеялся, что эта функция реализована в другом файле и на этапе линковки она найдется. Но линкер ее не нашел, потому что ее нигде и нет.
Вы, видимо, не все из учебника переписали. Там после функции main скорее всего идет реализация функции processingArray.
Ответ написан более года назад
Нравится 1 7 комментариев
Ogurchik-007 @Ogurchik-007 Автор вопроса
Когда после функции ставлю фигурные скобки в main что бы написать тело функции компалятор выдает ошибку, что ожидалась точка с запятой
Wataru @wataru Куратор тега C++
Ogurchik-007, код приведите.
Ogurchik-007 @Ogurchik-007 Автор вопроса
#include #include #include #include using namespace std; void inputArray(int B[24][14], int i, int j) < // Функция инициализации массива srand(time(0)); for (i = 0; i < 24; i++) < for (j = 0; j < 14; j++) < B[i][j] = (rand( )%100 - 50); >>; > void printArray(int B[24][14], int i, int j) < // Функция для вывода массива for (i = 0; i < 24; i++) < for (j = 0; j < 14; j++) < coutcout > void processingArray(int *B, int k); // Функция для обработки массива int main() < setlocale(LC_ALL, "Russian"); int B[24][14], i=0, j=0; inputArray(B, i, j); printArray(B, i, j); cout>
Wataru @wataru Куратор тега C++
Ogurchik-007, Нет, тело функции нельзя описывать в main, где вы ее вызываете. Надо это делать все функции Main. Или сделайте, как у вас с функциями inputArray и printArray, или реализуйте функцию в самом конце файла.
Ogurchik-007 @Ogurchik-007 Автор вопроса
Wataru, Как взять адрес первого элемента массива если делать функцию processingArray так же как функции выше?
Wataru @wataru Куратор тега C++
Ogurchik-007, Адрес первого элемета в i-ой стороке двумерного массива: B[i] или &B[i][0]
А вообще, вы C++ проходите, или C? Если C++, то испольуйте std::vector вместо таких массивов.