Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2009, 21:25   #1
AxenicX
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 65
По умолчанию Как подключить GDI+ в code::blocks

Как мне подключить библиотеку gdi+ в IDE CODE::BLOCKS? Пытаюсь скомпилировать такой код:
Код:
#include <iostream>
#include <windows.h>

using namespace std;

int main()
{
    SetConsoleCP(GetACP());
    SetConsoleOutputCP(GetACP());
    Bitmap bm(L"123.jpg");
    CodecsList codecsList = ReadCodecsList(true);
    GUID JpegId = codecsList[ImageFormatJPEG];
    bm.Save(L"test2.jpg", JpegId);
    return 0;
}
При этом в настройках компилятора в поле link Libaries казываю ссылку на "gdiplus.lib" и при компиляции мне выдается ошибки, что все использованные в коде функции не найдены.

П.С. Блин скажите пожалуйсто, где-нибудь есть справочник по библиотекам и функциям c++ хотябы PLATFORM SDK библиотек.

Последний раз редактировалось AxenicX; 23.12.2009 в 21:37.
AxenicX вне форума Ответить с цитированием
Старый 23.12.2009, 23:15   #2
Somebody
Участник клуба
 
Регистрация: 08.10.2007
Сообщений: 1,185
По умолчанию

1) #include ещё надо.
2) startup/shutdown надо вызывать.
3) Из-за (2) объекты в main не прокатят, или динамически через new/deleter, или в отдельных функциях.
Somebody вне форума Ответить с цитированием
Старый 24.12.2009, 21:21   #3
AxenicX
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 65
По умолчанию

Пишу такой код, ругается начиная со строчки 3 и 4, gdiplus.lib подключил.

Цитата:
#include <iostream>
#include <windows.h>
#include <..\..\Program Files\Microsoft Platform SDK\Include\GdiPlus.h>
#include <..\..\Program Files\Microsoft Platform SDK\Include\Ole2.h>
#include <string>

using namespace Gdiplus;

int main()
{
GdiplusStartupInput gdiplusStartupInput;
ULONG_PTR gdiplusToken;
GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
Bitmap bm(L"123.jpg");
CodecsList codecsList = ReadCodecsList(true);
GUID JpegId = codecsList[ImageFormatJPEG];
bm.Save(L"test2.jpg", JpegId);
GdiplusShutdown(gdiplusToken);
return 0;
}
Народ пожалуйсто помогите, нужно завтра программу сдать.

И вот так писать тоже пробывал:
Код:
#include "..\..\Program Files\Microsoft Platform SDK\Include\GdiPlus.h"
#include "..\..\Program Files\Microsoft Platform SDK\Include\Ole2.h"

Последний раз редактировалось AxenicX; 24.12.2009 в 23:45.
AxenicX вне форума Ответить с цитированием
Старый 25.12.2009, 13:47   #4
AxenicX
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 65
По умолчанию

Народ ну что никто не знает как? Вот я пробовыл работать с сокетами, там просто линкуешь библиотеку и инклудешь winsocket2.h
AxenicX вне форума Ответить с цитированием
Старый 25.12.2009, 15:20   #5
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Код:
#include <GdiPlus.h>
#include <Ole2.h>
а так пробывали?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.12.2009, 15:27   #6
AxenicX
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 65
По умолчанию

Этот же код, +пролинкованная библиотека, и то что вы написали, и все равно ругается. Тока компилятор gbitn No such file or directory/

Последний раз редактировалось AxenicX; 25.12.2009 в 20:36.
AxenicX вне форума Ответить с цитированием
Старый 25.12.2009, 22:03   #7
AxenicX
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 65
По умолчанию

Нучшто ник-то с этой проблемой не сталкивался? Я уже все перепробывал. В самом лучшем развитие, компилятор открывает какой-нибудь другой заголовочный файл (который имеет отношение к gdi+) и пишет что в нем куча ошибок.

На крайняк, я уже и на visual studio 2008 EE перейду, только как там подключать Platform SDK библиотеки?
AxenicX вне форума Ответить с цитированием
Старый 26.12.2009, 23:46   #8
AxenicX
Пользователь
 
Регистрация: 21.09.2009
Сообщений: 65
По умолчанию

Скажите пожалуйсто, а как эта библиотека подключается в visual studio 2008?
AxenicX вне форума Ответить с цитированием
Старый 27.12.2009, 13:12   #9
counter
Участник клуба
 
Регистрация: 18.10.2008
Сообщений: 1,409
По умолчанию

я когда-то делал так (завернул в свой класс):

//MyImage.h
Код:
#ifndef _MyImage_H_
#define _MyImage_H

#include<windows.h>
#include<GdiPlus.h>
#pragma comment(lib,"Gdiplus.lib")
//#pragma comment (lib, "Delayimp.lib")
//#pragma comment (linker, "/DelayLoad:GDIPlus.dll")
//#pragma comment (linker, "/Delay:nobind")

class MyImage {

	// initialize GDI +
	ULONG_PTR gdiplusToken; 
	Gdiplus::GdiplusStartupInput input;
	Gdiplus::GdiplusStartupOutput output;
	
	Gdiplus::Image *myImage;
	Gdiplus::Rect myRect;

public:

	MyImage() { myImage=NULL; }
	void InitGdiPlus();          //  initialize Microsoft Windows GDI+
	void LoadImage(wchar_t*);
	void ImageDraw(HDC,RECT,int,int);
	void DestroyGdiPlus();       // cleans up resources used by Microsoft Windows GDI+
};

#endif
// myImage.cpp
Код:
#include "MyImage.h"

void MyImage::InitGdiPlus()

{
		
	input.DebugEventCallback=NULL;
	input.GdiplusVersion=1;
	input.SuppressBackgroundThread=false;
	input.SuppressExternalCodecs=false;
		
	output.NotificationHook=NULL;
	output.NotificationUnhook=NULL;

	Gdiplus::GdiplusStartup(&gdiplusToken,&input,&output);
};

void MyImage::LoadImage(wchar_t *ImageName)

{ 
	myImage = Gdiplus::Image::FromFile(ImageName,false);
};

void MyImage::ImageDraw(HDC dc, RECT rect,int Width,int Height)

{
	Gdiplus::Graphics myGraphics(dc);

	myRect.X=rect.left;
	myRect.Y=rect.top;
	myRect.Width=Width;
	myRect.Height=Height;
		
	myGraphics.DrawImage(myImage,myRect);
};

void MyImage::DestroyGdiPlus()

{
	myImage->~Image();
	Gdiplus::GdiplusShutdown(gdiplusToken);
};
// применение
Код:
...
MyImage Img;

Img.InitGdiPlus();
Img.LoadImageW(L"DataBase\\resource\\default.img");			      
Img.ImageDraw(dc,Rect,150,150);
Img.DestroyGdiPlus();
...
counter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Начать работу с Code::Blocks Koluna Софт 15 29.05.2010 17:55
как подключить в code::blocks библиотеку ws2_32.lib AxenicX Общие вопросы C/C++ 3 05.12.2009 18:05
Вопрос о компиляторах Code::blocks russian-stalker Софт 7 28.11.2009 21:22
Code Blocks [Ap][uTekToP] Общие вопросы C/C++ 6 23.09.2009 20:58
CODE::BLOCKS vvviperrr Софт 0 18.12.2008 19:19