Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Paul-ka
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 3
#1

Error to use CharToOemA - C++

19.10.2012, 18:20. Просмотров 931. Ответов 4
Метки нет (Все метки)

Столкнулся с непонятной проблемой.

До этого пользовался тем же способом с успехом, сейчас не могу понять что не так.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <fstream>
#include <vector>
#include <string>
#include <Windows.h>
#include <algorithm>
#include "ATM.h"
#include "Card.h"
 
using namespace std;
using namespace System;
 
#define cyrOut(_string_) CharToOemA(_string_,szStr);\
cout << szStr
и затем пользуюсь кириллическим выводом

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
#include "stdafx.h"
#include <conio.h>
 
//char *rus(char*,char*);
int menu(int n,char *punkt[]) 
{
    int key=0; 
    int code;  
    do  {
            system("cls");  
            key=(key+n)%n;
            cyrOut(punkt[n]); //Ругается здесь
            printf("%c",'\n');
            for(int i=0;i<n;i++)
            {
                if (key==i) 
                {
                    printf("-> ");
                    cyrOut(punkt[i]); //здесь
                    printf("%c",'\n');
                }
                else 
                {
                    printf("   ");
                    cyrOut(punkt[i]);//И здесь
                    printf("%c",'\n');
                }
            }
            code=getch();  
            if (code==224)
            {
                code=getch();
                if (code==80) key++; 
                if (code==72) key--; 
            }
        }
    while(code!=13); 
    return key; 
}
Если закомментить указанные строки ошибка пропадает, собственно лог ошибки:

1>univmenu.obj : error LNK2028: ссылка на неразрешенную лексему (0A000057) "extern "C" int __stdcall CharToOemA(char const *,char *)" (?CharToOemA@@$$J18YGHPBDPAD@Z) в функции "int __cdecl menu(int,char * * const)" (?menu@@$$FYAHHQAPAD@Z)
1>univmenu.obj : error LNK2019: ссылка на неразрешенный внешний символ "extern "C" int __stdcall CharToOemA(char const *,char *)" (?CharToOemA@@$$J18YGHPBDPAD@Z) в функции "int __cdecl menu(int,char * * const)" (?menu@@$$FYAHHQAPAD@Z)
1>E:\Универ\2 курс\3 семестр\ООП\Лабы\Исходники\lab-2\Debug\lab-2.exe : fatal error LNK1120: 2 неразрешенных внешних элементов

Среда: MS VS 2010.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2012, 18:20
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Error to use CharToOemA (C++):

Иероглифы после CharToOemA - C++
Подскажите, почему после казалось бы простейшей операции в &quot;buf&quot; оказываются каракули? setllocale вроде не помагает .... Каракули я вижу в...

Исправить ошибку в WxDev-C++: Error with debugging process: GDB Error: error, No source file named main.cpp - C++
Здравствуйте товарищи! Новенький я в си, установил wxDev-C++, скомпилировал, запускаешь - работает, а чтоб пошагово отладка - не...

Error LNK1120, error LNK2019, error LNK2028, queue - C++
// свойство класса Parser queue&lt;elem*&gt;* postfix = new queue&lt;elem*&gt;; // строка, из-за которой происходит ошибка ...

Ошибка в тестовом примере: "Error 1 error C2143: syntax error : missing ';' before 'if'" - C++
#include&lt;iostream&gt; using namespace std; int main(){ int x, a = 0, b = 10; (cin &gt;&gt; x).get(); while (x){ int c = x % 10; ...

Error 1 error C2664: 'CharToOemW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR' - C++
выдает вот такую ошибку - Error 1 error C2664: 'CharToOemW' : cannot convert parameter 1 from 'const char *' to 'LPCWSTR' использую visual...

C:\Dev-Cpp\Makefile.win [Build Error] [Безымянный1.o] Error 1 - C++
C:\Dev-Cpp\Makefile.win Error 1 компилятор стал показывать такую ошибку, после того как я открыл эту папку редактором и удалил от...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
19.10.2012, 18:41 #2
C++
1
2
#define cyrOut(_string_) CharToOemA(_string_,szStr);\
cout << szStr
_string_ вижу, а где szStr?

Добавлено через 12 минут
C++
1
2
3
#define cyrOut(_string_) {char *szStr=new char [strlen(_string_)+1]; \
CharToOemA(_string_,szStr);\
cout << szStr; delete [] szStr;}
так работает вроде
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "cstdlib"
#include <iostream>
#include <Windows.h>
 
using namespace std;
 
#define cyrOut(_string_) {char *szStr=new char [strlen(_string_)+1]; \
CharToOemA(_string_,szStr);\
cout << szStr; delete [] szStr;}
int main(){
    char r[]="абвгдеёжзийклмнопрстуфхцчшщЫьЪэюя1234567890\"\\\n";
    cout<<r;
    cyrOut(r);
    cyrOut(r);
    system("pause");
    return 0;
}
Paul-ka
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 3
19.10.2012, 20:34  [ТС] #3
static char szStr[512];
Объявлено в заголовочном файле

твой код принёс такие же ошибки( Перестройка тоже не решила проблему... Тут надо по смыслу ошибок разбираться, но я совсем не понимаю, что они значат
Croessmah
Модератор
Эксперт CЭксперт С++
13134 / 7397 / 828
Регистрация: 27.09.2012
Сообщений: 18,227
Записей в блоге: 3
Завершенные тесты: 1
19.10.2012, 23:11 #4
Попробуйте в макросе переименовать szStr.

Добавлено через 6 минут
А использовать setlocale нельзя?
Paul-ka
0 / 0 / 0
Регистрация: 19.10.2012
Сообщений: 3
20.10.2012, 11:50  [ТС] #5
Цитата Сообщение от Croessmah Посмотреть сообщение
Попробуйте в макросе переименовать szStr.
Это как?

Добавлено через 1 минуту
А локаль менять нельзя

Добавлено через 1 минуту
Ты можешь сказать, что эти ошибки значат в данном случае и почему в проекте с теми же строками оно работает, а тут нет?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.10.2012, 11:50
Привет! Вот еще темы с ответами:

Ошибка error C2146: syntax error : missing ';' before identifier 'alph' - C++
Не получается откомпилировать прогу из консоля в MFC, выбивает ошибку error C2146: syntax error : missing ';' before identifier 'alph' ...

Причина ошибки [ilink32 Error] Error: Unable to perform link - C++
Когда сохранил программу и пытаюсь открыть ее снова то мне выкидывает ошибку Warning: Error detected (LME288) Error: Unable to...

[ilink32 Error] Error: Unresolved external 'zamena (int * *) ' referenced - C++
Вот это программа не работает : вот ошибка которую выдает компилятор: Error: Unresolved external 'zamena(int * *)' referenced from...

Error 1 fatal error C1093: API call 'ImportFile' failed '0x80070003' : ErrorMessage: - C++
// Lab7_1.cpp : main project file. #include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; float y; void...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
20.10.2012, 11:50
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru