11
Май
2015

"[Error] ld returned 1 exit status" постоянно, от разных реализаций функций, делающих скрин

Понадобилась функция, делающая скриншот в программе и сохраняющая его в файл. Я нашёл несколько таких функций, но каждая (!) из них при добавлении в программу заставляет её выдавать при компиляции вот такую ошибку:

C:\{папка_с_файлом.cpp}\collect2.exe [Error] ld returned 1 exit status

Причём других ошибок нет, или я их исправляю. Обычно такая ошибка происходит, когда у меня код уже скомпилирован и запущен .exe, и я пытаюсь ещё раз его скомпилировать и запустить. Но, разумеется, я всё перепробовал, даже запускал код на другом компе (но тоже в Dev) - такая же ошибка.

Если убрать эту функцию, то код снова нормально работает. Подскажите, что делать?

Вот текущий код с одним из вариантов функции, делающий скриншот:

#include <Winsock2.h>//Ws2_32.lib
#include <ws2tcpip.h>
#include <Windows.h>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>  //getch
#include <string.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/time.h>
//#include <sys/socket.h>
#define ever (;;)
#include <gdiplus.h>
#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;
}

Источник: https://ru.stackoverflow.com/questions/423045/error-ld-returned-1-exit-status-%D0%BF%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%BD%D0%BE-%D0%BE%D1%82-%D1%80%D0%B0%D0%B7%D0%BD%D1%8B%D1%85-%D1%80%D0%B5%D0%B0%D0%BB%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B9-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9-%D0%B4%D0%B5%D0%BB

Share

Тебе может это понравится...