Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
1

Невозможно преобразовать параметр 1 из "const wchar_t [12]" в "const char *"

25.12.2012, 19:55. Показов 6792. Ответов 33
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Писал программу. Дошел до наложения текстур. Пытаюсь наложить 4-й час. Много разных ошибок. Все ошибки гуглил. На данный момент ошибка такая:
невозможно преобразовать параметр 1 из "const wchar_t [12]" в "const char *"
Гуглил эту ошибку, писали, что надо добавить "L", чтобы привести к нужному типу данных, но проблема в том, что эта ошибка выдается, когда "L" у меня уже есть, а если "L" нету, то выдаются совсем другой длинный список ошибок.

Код программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include <time.h>
#include <Windows.h>
#include <stdlib.h>
#include <GL/glut.h>
#include <GL/glu.h>
#include <GL/glaux.h>
#include <cstdio>
#pragma comment (lib, "glaux.lib")
#pragma comment (lib,"glu32.lib")
#pragma comment (lib,"opengl32.lib")
int dir;
float gamer_x=0, gamer_y=0, gamer_z=0, mob_x=0, mob_y=0, mob_z=0;
GLuint gamingtxt, texture;
 
GLuint LoadBMP(const char *fmt, ...)
{
    GLuint t;
    char filename[256];
    va_list ap;
    va_start(ap, fmt);
    vsprintf_s(filename, fmt, ap);
    va_end(ap);
 
    AUX_RGBImageRec *texture = auxDIBImageLoadA(filename);
    glGenTextures(1, &t);
    glBindTexture(GL_TEXTURE_2D, t);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    glTexImage2D(GL_TEXTURE_2D, 0, 3, texture->sizeX, texture->sizeY, 0,
    GL_RGB, GL_UNSIGNED_BYTE, texture->data);
    
    return t;    
}
 
void display(void) { 
glClear (GL_COLOR_BUFFER_BIT);
 
/* Игрок */ 
glColor3f (1.0, 1.0, 1.0); 
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, gamingtxt);
glBegin(GL_POLYGON); 
glTexCoord2d(0, 0); glVertex3f (gamer_x, gamer_y, gamer_z + 0.0); 
glTexCoord2d(1, 0); glVertex3f (gamer_x + 0.03, gamer_y, gamer_z + 0.0); 
glTexCoord2d(1, 1); glVertex3f (gamer_x + 0.03, gamer_y + 0.03, gamer_z + 0.0); 
glTexCoord2d(0, 1); glVertex3f (gamer_x, gamer_y + 0.03, gamer_z + 0.0);
glEnd();
 
/* Противники */
 
glColor3f (0.0, 0.0, 0.0); 
glBegin(GL_POLYGON); 
glVertex3f (mob_x + 0.22, mob_y + 0.22, mob_z + 0.0); 
glVertex3f (mob_x + 0.25, mob_y + 0.22, mob_z + 0.0); 
glVertex3f (mob_x + 0.25, mob_y + 0.25, mob_z + 0.0); 
glVertex3f (mob_x + 0.22, mob_y + 0.25, mob_z + 0.0);
glEnd();
glutSwapBuffers();
} 
 
/* Движение мобов */
void MobMotion(){
    int RandomNumber = rand()%4;
    switch(RandomNumber)
    {
        case 0 :  mob_x-=0.01; break;
        case 1 :  mob_y+=0.01; break;
        case 2 :  mob_x+=0.01; break;        
        case 3 :  mob_y-=0.01; break;
    }
}
 
/* Ограничение перемещения размерами экрана */
void Screen(){
    if(gamer_x>0.97){
            gamer_x = 0.97;
            }
    if(gamer_x<-1){
            gamer_x = -1;
            }
    if(gamer_y>0.97){
            gamer_y = 0.97;
            }
    if(gamer_y<-1){
            gamer_y = -1;
            }
    if(mob_x>0.97){
            mob_x = 0.97;
            }
    if(mob_x<-1){
            mob_x = -1;
            }
    if(mob_y>0.97){
            mob_y = 0.97;
            }
    if(mob_y<-1){
            mob_y = -1;
            }
            
}
 
/* Функция времени */
void Timer(int){
    display();  
    MobMotion();
    Screen();
    glutTimerFunc(0.001, Timer, 0);
}
 
/* Функция считывания нажатия клавиш и перемещения игрока */
void KeyboardEvent(int key, int a, int b)
{   
    switch(key)
    {
        case 100 :  gamer_x-=0.01; break;
        case 101 :  gamer_y+=0.01; break;
        case 102:   gamer_x+=0.01; break;        
        case 103 :  gamer_y-=0.01; break;
    }
}
 
/* Определим параметры окна */ 
int main(int argc, char** argv) 
{ 
glutInit(&argc, argv); 
glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB); 
glutInitWindowSize (800, 800); 
glutInitWindowPosition (100, 100); 
glutCreateWindow ("Game v0.1"); 
glClearColor (0.0,0.4,0.0,0.0); 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
gamingtxt = LoadBMP(L"texture.bmp");
glutDisplayFunc(display); 
glutTimerFunc(0.001, Timer, 0);
glutSpecialFunc(KeyboardEvent);
glutMainLoop(); 
return 0;
}
Прошу помощи.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.12.2012, 19:55
Ответы с готовыми решениями:

Невозможно преобразовать параметр 1 из 'const char [15]' в 'LPCWSTR'
с сайта скачала прогу которая должна рисовать сферу, но при компилировании выходит ошибка:error...

Невозможно преобразовать параметр из int в const char
Приветствую, помогите пожалуйста исправить следующую ошибку: printf: невозможно преобразовать...

Error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *'
error C2664: sprintf: невозможно преобразовать параметр 1 из 'const char *' в 'char *' void...

Printf: невозможно преобразовать параметр 1 из 'char' в 'const char *'
Здравствуйте, подскажите как исправить? &quot;printf: невозможно преобразовать параметр 1 из 'char' в...

Fopen: невозможно преобразовать параметр 1 из 'LPWSTR' в 'const char *'
#include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include&lt;cstdio&gt; #include&lt;io.h&gt; int APIENTRY...

33
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
26.12.2012, 21:32  [ТС] 21
Author24 — интернет-сервис помощи студентам
Список появляющихся ошибок:
1>glaux.lib(tkimage.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__wsprintfA в функции _RawImageOpenAW@8
1>glaux.lib(tkdib.obj) : error LNK2001: неразрешенный внешний символ "__imp__wsprintfA"
1>glaux.lib(tkimage.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__MessageBoxA@16 в функции _RawImageOpenAW@8
1>glaux.lib(tkdib.obj) : error LNK2001: неразрешенный внешний символ "__imp__MessageBoxA@16"
1>glaux.lib(tk.obj) : error LNK2001: неразрешенный внешний символ "__imp__MessageBoxA@16"
1>glaux.lib(tkimage.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetFocus@0 в функции _RawImageOpenAW@8
1>glaux.lib(tkdib.obj) : error LNK2001: неразрешенный внешний символ "__imp__GetFocus@0"
1>glaux.lib(tk.obj) : error LNK2001: неразрешенный внешний символ "__imp__GetFocus@0"
1>glaux.lib(tkdib.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__DeleteObject@4 в функции _tkDIBImageLoadAW@8
1>glaux.lib(tk.obj) : error LNK2001: неразрешенный внешний символ "__imp__DeleteObject@4"
1>glaux.lib(tkdib.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__DeleteDC@4 в функции _tkDIBImageLoadAW@8
1>glaux.lib(tkdib.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__GdiFlush@0 в функции _tkDIBImageLoadAW@8
1>glaux.lib(tkdib.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__SetDIBits@28 в функции _tkDIBImageLoadAW@8
1>glaux.lib(tkdib.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__SelectObject@8 в функции _tkDIBImageLoadAW@8
1>glaux.lib(tkdib.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__CreateDIBSection@24 в функции _tkDIBImageLoadAW@8
1>glaux.lib(tkdib.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__CreateCompatibleDC@4 в функции _tkDIBImageLoadAW@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__DispatchMessageA@4 в функции _tkExec@0
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetMessageA@16 в функции _tkExec@0
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__TranslateMessage@4 в функции _tkExec@0
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__PeekMessageA@20 в функции _tkExec@0
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetClientRect@8 в функции _tkExec@0
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetSystemMetrics@4 в функции _tkInitPosition@16
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ShowWindow@8 в функции _tkInitWindowAW@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetDC@4 в функции _tkInitWindowAW@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetWindowRect@8 в функции _tkInitWindowAW@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__CreateWindowExA@48 в функции _tkInitWindowAW@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__CreateWindowExW@48 в функции _tkInitWindowAW@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__AdjustWindowRect@12 в функции _tkInitWindowAW@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__RegisterClassA@4 в функции _tkInitWindowAW@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__RegisterClassW@4 в функции _tkInitWindowAW@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetStockObject@4 в функции _tkInitWindowAW@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__LoadCursorA@8 в функции _tkInitWindowAW@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__LoadIconA@8 в функции _tkInitWindowAW@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__SetPaletteEntries@16 в функции _tkSetOneColor@16
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetPaletteEntries@16 в функции _tkSetFogRamp@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__SwapBuffers@4 в функции _tkSwapBuffers@0
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetCursorPos@4 в функции _tkGetMouseLoc@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__SetCapture@4 в функции _tkWndProc@16
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ReleaseCapture@0 в функции _tkWndProc@16
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetKeyState@4 в функции _tkWndProc@16
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__DestroyWindow@4 в функции _tkWndProc@16
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__EndPaint@8 в функции _tkWndProc@16
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__BeginPaint@8 в функции _tkWndProc@16
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__PostQuitMessage@4 в функции _tkWndProc@16
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__RealizePalette@4 в функции _tkWndProc@16
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__SelectPalette@12 в функции _tkWndProc@16
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__DefWindowProcA@16 в функции _tkWndProc@16
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__RegCloseKey@4 в функции _GetRegistrySysColors@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__RegQueryValueExA@24 в функции _GetRegistrySysColors@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__RegOpenKeyExA@20 в функции _GetRegistrySysColors@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__PostMessageA@16 в функции _GrabStaticEntries@4
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__SetSysColors@12 в функции _GrabStaticEntries@4
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetSysColor@4 в функции _GrabStaticEntries@4
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__SetSystemPaletteUse@8 в функции _GrabStaticEntries@4
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__CreatePalette@4 в функции _FlushPalette@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__SetPixelFormat@12 в функции _FindPixelFormat@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ChoosePixelFormat@8 в функции _FindBestPixelFormat@12
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__DescribePixelFormat@16 в функции _FindExactPixelFormat@12
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__UnrealizeObject@4 в функции _RealizePaletteNow@12
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__InvalidateRect@12 в функции _ForceRedraw@4
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__GetPixelFormat@4 в функции _PixelFormatDescriptorFromDc@8
1>glaux.lib(tk.obj) : error LNK2019: ссылка на неразрешенный внешний символ __imp__ReleaseDC@8 в функции _CleanUp@0
1>c:\my dоcuments\visual studio 2010\Projects\fff\Debug\fff.exe : fatal error LNK1120: 56 неразрешенных внешних элементов
1>
1>Build FAILED.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
26.12.2012, 21:35 22
Либу OpenGL откуда брали ?
Она вообще рабочая? проверьте на простом примере ?
0
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
26.12.2012, 22:18  [ТС] 23
О какой библиотеке идет речь?
glaux.lib, glu32.lib, opengl32.lib?

Знакомый скинул текст своей программы, она у меня нормально работает и отображает текстуры. Поэтому скорей всего проблема не в библиотеке.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
26.12.2012, 22:23 24
glaux.lib -ругается именно на неё, как я понял линкер не может найти в ней указанные ф-ции...

Добавлено через 3 минуты
Что за файл tkimage ?
1
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
26.12.2012, 22:41  [ТС] 25
glaux.lib рабочая. Проверял.
Что такое tkimage не имею понятия.
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
26.12.2012, 22:43 26
tkimage модуль походу какой-то cpp или h, если ругается на его объектный файл
0
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
26.12.2012, 22:47  [ТС] 27
Что делать-то?
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
26.12.2012, 22:51 28
Метом исключения кода попытать выяснить вызов какой/каких ф-ций вызывает подобные ошибки

Добавлено через 1 минуту
Потому как непонятно откуда нарисовалась ф-ция _RawImageOpenAW() может внутренняя
1
2062 / 618 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
26.12.2012, 23:01 29
Вот нагуглила, tkimage.c который определяет эту функцию, если не ошибаюсь, то она требует юникодовые аргументы
Кликните здесь для просмотра всего текста

C
/*
 * (c) Copyright 1993, Silicon Graphics, Inc.
 * ALL RIGHTS RESERVED
 * Permission to use, copy, modify, and distribute this software for
 * any purpose and without fee is hereby granted, provided that the above
 * copyright notice appear in all copies and that both the copyright notice
 * and this permission notice appear in supporting documentation, and that
 * the name of Silicon Graphics, Inc. not be used in advertising
 * or publicity pertaining to distribution of the software without specific,
 * written prior permission.
 *
 * THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU "AS-IS"
 * AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR OTHERWISE,
 * INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR
 * FITNESS FOR A PARTICULAR PURPOSE.  IN NO EVENT SHALL SILICON
 * GRAPHICS, INC.  BE LIABLE TO YOU OR ANYONE ELSE FOR ANY DIRECT,
 * SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY
 * KIND, OR ANY DAMAGES WHATSOEVER, INCLUDING WITHOUT LIMITATION,
 * LOSS OF PROFIT, LOSS OF USE, SAVINGS OR REVENUE, OR THE CLAIMS OF
 * THIRD PARTIES, WHETHER OR NOT SILICON GRAPHICS, INC.  HAS BEEN
 * ADVISED OF THE POSSIBILITY OF SUCH LOSS, HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
 * POSSESSION, USE OR PERFORMANCE OF THIS SOFTWARE.
 *
 * US Government Users Restricted Rights
 * Use, duplication, or disclosure by the Government is subject to
 * restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
 * (c)(1)(ii) of the Rights in Technical Data and Computer Software
 * clause at DFARS 252.227-7013 and/or in similar or successor
 * clauses in the FAR or the DOD or NASA FAR Supplement.
 * Unpublished-- rights reserved under the copyright laws of the
 * United States.  Contractor/manufacturer is Silicon Graphics,
 * Inc., 2011 N.  Shoreline Blvd., Mountain View, CA 94039-7311.
 *
 * OpenGL(TM) is a trademark of Silicon Graphics, Inc.
 */
#include <windows.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include "tk.h"
#define static
#define IMAGIC      0x01da
#define IMAGIC_SWAP 0xda01
#define SWAP_SHORT_BYTES(x) ((((x) & 0xff) << 8) | (((x) & 0xff00) >> 8))
#define SWAP_LONG_BYTES(x) (((((x) & 0xff) << 24) | (((x) & 0xff00) << 8)) | 
                            ((((x) & 0xff0000) >> 8) | (((x) & 0xff000000) >> 24)))
typedef struct _rawImageRec {
    unsigned short imagic;
    unsigned short type;
    unsigned short dim;
    unsigned short sizeX, sizeY, sizeZ;
    unsigned long min, max;
    unsigned long wasteBytes;
    char name[80];
    unsigned long colorMap;
    HANDLE file;
    unsigned char *tmp, *tmpR, *tmpG, *tmpB;
    unsigned long rleEnd;
    unsigned long *rowStart;
    long *rowSize;
} rawImageRec;
static void RawImageClose(rawImageRec *raw);
static rawImageRec *RawImageOpenAW(char *fileName, BOOL bUnicode)
{
    rawImageRec *raw;
    unsigned long *rowStart, *rowSize, ulTmp;
    int x;
    DWORD dwBytesRead;
    raw = (rawImageRec *)malloc(sizeof(rawImageRec));
    if (raw == NULL) {
        MESSAGEBOX(GetFocus(), "Out of memory.", "Error", MB_OK);
        return NULL;
    }
    raw->file = bUnicode ? CreateFileW((LPWSTR) fileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0) :
                           CreateFileA((LPSTR) fileName, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, 0);
    if (raw->file == INVALID_HANDLE_VALUE) {
        char ach[256];
        bUnicode ? wsprintf(ach, "Failed to open image file %ws.n", fileName) :
                   wsprintf(ach, "Failed to open image file %s.n", fileName);
        MESSAGEBOX(GetFocus(), ach, "Error", MB_OK);
        free( raw );
        return NULL;
    }
    ReadFile(raw->file, (LPVOID) raw, 12, &dwBytesRead, (LPOVERLAPPED) NULL);
    if (raw->imagic == IMAGIC_SWAP) {
        raw->type = SWAP_SHORT_BYTES(raw->type);
        raw->dim = SWAP_SHORT_BYTES(raw->dim);
        raw->sizeX = SWAP_SHORT_BYTES(raw->sizeX);
        raw->sizeY = SWAP_SHORT_BYTES(raw->sizeY);
        raw->sizeZ = SWAP_SHORT_BYTES(raw->sizeZ);
    } else if (raw->imagic != IMAGIC) {
        // magic number is absent - conclude file is invalid (?)
        MESSAGEBOX(GetFocus(), "Invalid rgb file.", "Error", MB_OK);
        RawImageClose( raw );
        return NULL;
    }
        
    raw->tmp = (unsigned char *)malloc(raw->sizeX*256);
    raw->tmpR = (unsigned char *)malloc(raw->sizeX*256);
    raw->tmpG = (unsigned char *)malloc(raw->sizeX*256);
    raw->tmpB = (unsigned char *)malloc(raw->sizeX*256);
    if (raw->tmp == NULL || raw->tmpR == NULL || raw->tmpG == NULL ||
        raw->tmpB == NULL) {
        MESSAGEBOX(GetFocus(), "Out of memory.", "Error", MB_OK);
        RawImageClose( raw );
        return NULL;
    }
    if ((raw->type & 0xFF00) == 0x0100) {
        x = raw->sizeY * raw->sizeZ * sizeof(long);
        raw->rowStart = (unsigned long *)malloc(x);
        raw->rowSize = (long *)malloc(x);
        if (raw->rowStart == NULL || raw->rowSize == NULL) {
            MESSAGEBOX(GetFocus(), "Out of memory.", "Error", MB_OK);
            RawImageClose( raw );
            return NULL;
        }
        raw->rleEnd = 512 + (2 * x);
        SetFilePointer(raw->file, 512, NULL, FILE_BEGIN);
        ReadFile(raw->file, (LPVOID) raw->rowStart, x, &dwBytesRead,
                 (LPOVERLAPPED) NULL);
        ReadFile(raw->file, (LPVOID) raw->rowSize, x, &dwBytesRead,
                 (LPOVERLAPPED) NULL);
        if (raw->imagic == IMAGIC_SWAP) {
            x /= sizeof(long);
            rowStart = raw->rowStart;
            rowSize = raw->rowSize;
            while (x--) {
                ulTmp = *rowStart;
                *rowStart++ = SWAP_LONG_BYTES(ulTmp);
                ulTmp = *rowSize;
                *rowSize++ = SWAP_LONG_BYTES(ulTmp);
            }
        }
    }
    return raw;
}
static void RawImageClose(rawImageRec *raw)
{
    if( !raw )
        return;
    CloseHandle(raw->file);
    if( raw->tmp ) free(raw->tmp);
    if( raw->tmpR ) free(raw->tmpR);
    if( raw->tmpG ) free(raw->tmpG);
    if( raw->tmpB ) free(raw->tmpB);
    free(raw);
}
static void RawImageGetRow(rawImageRec *raw, unsigned char *buf, int y, int z)
{
    unsigned char *iPtr, *oPtr, pixel;
    int count;
    DWORD dwBytesRead;
    if ((raw->type & 0xFF00) == 0x0100) {
        SetFilePointer(raw->file, raw->rowStart[y+z*raw->sizeY], NULL, FILE_BEGIN);
        ReadFile(raw->file, (LPVOID) raw->tmp,
                 (unsigned int)raw->rowSize[y+z*raw->sizeY], &dwBytesRead,
                 (LPOVERLAPPED) NULL);
        iPtr = raw->tmp;
        oPtr = buf;
        while (1) {
            pixel = *iPtr++;
            count = (int)(pixel & 0x7F);
            if (!count) {
                return;
            }
            if (pixel & 0x80) {
                while (count--) {
                    *oPtr++ = *iPtr++;
                }
            } else {
                pixel = *iPtr++;
                while (count--) {
                    *oPtr++ = pixel;
                }
            }
        }
    } else {
        SetFilePointer(raw->file, 512+(y*raw->sizeX)+(z*raw->sizeX*raw->sizeY),
                       NULL, FILE_BEGIN);
        ReadFile(raw->file, (LPVOID) buf, raw->sizeX, &dwBytesRead,
                 (LPOVERLAPPED) NULL);
    }
}
static void RawImageGetData(rawImageRec *raw, TK_RGBImageRec *final)
{
    unsigned char *ptr;
    int i, j;
    final->data = (unsigned char *)malloc((raw->sizeX+1)*(raw->sizeY+1)*4);
    if (final->data == NULL) {
        MESSAGEBOX(GetFocus(), "Out of memory.", "Error", MB_OK);
        return;
    }
    ptr = final->data;
    for (i = 0; i < raw->sizeY; i++) {
        RawImageGetRow(raw, raw->tmpR, i, 0);
        RawImageGetRow(raw, raw->tmpG, i, 1);
        RawImageGetRow(raw, raw->tmpB, i, 2);
        for (j = 0; j < raw->sizeX; j++) {
            *ptr++ = *(raw->tmpR + j);
            *ptr++ = *(raw->tmpG + j);
            *ptr++ = *(raw->tmpB + j);
        }
    }
}
TK_RGBImageRec *tkRGBImageLoad(char *fileName)
{
    return tkRGBImageLoadAW(fileName, FALSE);
}
TK_RGBImageRec *tkRGBImageLoadAW(char *fileName, BOOL bUnicode)
{
    rawImageRec *raw;
    TK_RGBImageRec *final;
    if( !(raw = RawImageOpenAW(fileName, bUnicode)) )
        return NULL;
    final = (TK_RGBImageRec *)malloc(sizeof(TK_RGBImageRec));
    if (final == NULL) {
        MESSAGEBOX(GetFocus(), "Out of memory.", "Error", MB_OK);
        RawImageClose(raw);
        return NULL;
    }
    final->sizeX = raw->sizeX;
    final->sizeY = raw->sizeY;
    RawImageGetData(raw, final);
    RawImageClose(raw);
    return final;
}
0
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
26.12.2012, 23:07  [ТС] 30
Я все равно не понимаю что мне делать
0
2062 / 618 / 41
Регистрация: 23.10.2011
Сообщений: 4,468
Записей в блоге: 2
26.12.2012, 23:12 31
Цитата Сообщение от florgas Посмотреть сообщение
Я все равно не понимаю что мне делать
Вот классная книга (Керниган) [ссылка удалена], сама сейчас ее читаю, там пишут про язык Си, если его изучить, потом все языки будут легкими.
0
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
26.12.2012, 23:50  [ТС] 32
Зачем мне какой-то язык? У меня конкретный вопрос по конкретной проблеме? Что за бред вообще?
0
Эксперт С++
8385 / 6147 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
27.12.2012, 00:23 33
Цитата Сообщение от programina Посмотреть сообщение
Вот нагуглила, tkimage.c который определяет эту функцию, если не ошибаюсь, то она требует юникодовые аргументы
Ну этот файл из исходников как я понимаю, а значит проблема всё таки в самой библиотеке.
Цитата Сообщение от florgas Посмотреть сообщение
Я все равно не понимаю что мне делать
Думаю нужно читать документацию, смотреть примеры.

Навскидку предположу что нужно определить какой-то макрос.( если учесть что библиотека действительно рабочая )
0
6 / 5 / 0
Регистрация: 28.09.2010
Сообщений: 366
27.12.2012, 12:17  [ТС] 34
Библиотеку качал с двух разных источников, а так же, программа моего друга у меня компилируется нормально. Может стоит выложить код программы друга?
0
27.12.2012, 12:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.12.2012, 12:17
Помогаю со студенческими работами здесь

Невозможно преобразовать параметр 1 из 'char' в 'const char *'
Дана задача: Задана последовательность, состоящая только из символов ‘&gt;’, ‘&lt;’ и ‘-‘. Требуется...

Ошибка компиляции "невозможно преобразовать параметр 1 из 'WCHAR [256]' в 'const char *'"
Я решил попробовать написать свой чит для кс го (для просмотра сквозь стены) и через 3 дня...

Ошибка: Cannot convert 'char const[18]' to 'const wchar_t *'
Unit1.cpp(59): E2034 Cannot convert 'char const' to 'const wchar_t *' Full parser context ...

Error C2440: return: невозможно преобразовать "const char *" в "const char (&)[6]"
Вроде все правильно а все равно не работает. Подскажите в чем ошибка #include &lt;iostream&gt; ...

Ошибка 6 error C2664: strtok: невозможно преобразовать параметр 1 из "const char *" в "char *"
string s = &quot;555 44 55 66&quot;;//размер строки заранее неизвестен char* p =...


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

Или воспользуйтесь поиском по форуму:
34
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru