Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> error C2664: cannot convert parameter 2 from, 'GdiplusStartupInput *' to 'const GDIP.. 
:(
    Опции темы
malor
  Дата 7.7.2011, 13:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 632
Регистрация: 17.11.2006

Репутация: нет
Всего: нет



Подключаю в программе динамически GDI+. В хэдере указано;
typedef long(__stdcall*GDIPLUSSTARTUP)(unsigned long*, const GDIPLUS_STARTUP_INPUT*, void*);

Начало cpp-файла:
Код
#include "stdafx.h"
#include <Gdiplus.h>
#include "SaveScreen2.h"

GDIPLUSSTARTUP GdiplusStartup;
......... etc ............


Далее по коду есть строки в одной из функций:
Код
GdiplusStartupInput gps;
ZeroMemory(&gps, sizeof(GdiplusStartupInput));
gps.GdiplusVersion = 1;
if (GdiplusStartup(&m_gdipToken, &gps, NULL)) 
    m_gdipToken = 0;


Про 4-ю строку компилятор выдаёт:

Цитата
savescreen2.cpp(48) : error C2664: 'long (unsigned long *,const GDIPLUS_STARTUP_INPUT *,void *)' : cannot convert parameter 2 from 'GdiplusStartupInput *' to 'const GDIPLUS_STARTUP_INPUT *'
        Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
Как избавиться?

VS2008

Присоединённый файл ( Кол-во скачиваний: 5 )
Присоединённый файл  CreateJPG_0807.zip 32,79 Kb
PM MAIL   Вверх
baldina
Дата 7.7.2011, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Цитата(malor @  7.7.2011,  13:22 Найти цитируемый пост)
GDIPLUSSTARTUP GdiplusStartup;

зачем это?
PM MAIL   Вверх
bsa
Дата 7.7.2011, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Скажи пожалуйста, а символ GDIPLUSSTARTUP где-нибудь документирован? Я лично не нашел описания. А раз описания нет, то и пользоваться им нельзя.

Добавлено через 1 минуту и 20 секунд
Цитата(baldina @  7.7.2011,  13:59 Найти цитируемый пост)
зачем это? 

Он же написал, что динамически подключает GDI+.
PM   Вверх
baldina
Дата 7.7.2011, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва

Репутация: 32
Всего: 101



Цитата(bsa @  7.7.2011,  14:06 Найти цитируемый пост)
Он же написал, что динамически подключает GDI+. 

верно... ох и много же придется руками делать...

malor, как у тебя GDIPLUS_STARTUP_INPUT описан? видимо он должен быть GdiplusStartupInput, тогда этой ошибки не будет

Добавлено через 1 минуту и 47 секунд
Цитата(bsa @  7.7.2011,  14:06 Найти цитируемый пост)
символ GDIPLUSSTARTUP где-нибудь документирован? Я лично не нашел описания.

веорятно потому, что malor описание не выложил ;-)
PM MAIL   Вверх
malor
  Дата 7.7.2011, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 632
Регистрация: 17.11.2006

Репутация: нет
Всего: нет



Все было выложено:
Код
struct GdiplusStartupInput        // for snapshot
{
    int GdiplusVersion; 
    int DebugEventCallback;
    int SuppressBackgroundThread;
    int SuppressExternalCodecs; 
};


bsa>>А раз описания нет, то и пользоваться им нельзя.

Компилятор ругался на const, а не на то, что что-то не объявлено.
PM MAIL   Вверх
bsa
Дата 8.7.2011, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 63
Всего: 196



Цитата(malor @  7.7.2011,  21:05 Найти цитируемый пост)
Компилятор ругался на const, а не на то, что что-то не объявлено. 

Поверь мне, преобразование из Type* в const Type* происходит молча и без проблем. А вот преобразование Type1* в Type2* далеко не всегда возможно.

Это сообщение отредактировал(а) bsa - 8.7.2011, 00:12
PM   Вверх
mes
Дата 8.7.2011, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


любитель
****


Профиль
Группа: Участник Клуба
Сообщений: 7954
Регистрация: 14.1.2006

Репутация: 144
Всего: 250



Цитата(malor @  7.7.2011,  20:05 Найти цитируемый пост)
Все было выложено:


Цитата(malor @  7.7.2011,  12:22 Найти цитируемый пост)
from 'GdiplusStartupInput *' to 'const GDIPLUS_STARTUP_INPUT *'

как соотноосятся эти два типа друг к другу (typedef?) должно быть известно в точке использования (там, где возникла ошибка)..


--------------------
PM MAIL WWW   Вверх
volatile
Дата 8.7.2011, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 37
Всего: 85



Цитата(mes @  8.7.2011,  00:21 Найти цитируемый пост)
как соотноосятся эти два типа друг к другу 

mes, они никак не соотносятся  smile 
Это две разные структуры:
Код

struct GdiplusStartupInput        // for snapshot
{
    int GdiplusVersion; 
    int DebugEventCallback;
    int SuppressBackgroundThread;
    int SuppressExternalCodecs; 
};

Код

typedef struct
{
    unsigned int GdiplusVersion;
    DEBUGEVENTPROC DebugEventCallback;
    int SuppressBackgroundThread;
    int SuppressExternalCodecs;
} GDIPLUS_STARTUP_INPUT;


Заглянул в исходник - это что-то!
Кроме этих струкутр есть еще несколько копий их-же в разных *.h-никах
Посоветовать автору можно только учить язык.

Это сообщение отредактировал(а) volatile - 8.7.2011, 00:53
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0873 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.