Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
Alllexx4
4 / 4 / 0
Регистрация: 16.04.2013
Сообщений: 36
1

Найти причины возникновения ошибки: аргумент типа "const char *" несовместим с параметром типа "char *"

24.09.2018, 19:46. Просмотров 2159. Ответов 11
Метки нет (Все метки)

Есть вот такая функция: в файле test.h

C++
1
2
3
4
5
6
7
8
9
extern UFUNEXPORT int UF_print_syslog(
       char *message, /* <I>
                         Message to be output to the syslog
                      */
       logical trace  /* <I>
                         TRUE = Print the stack trace along with the message
                         FALSE = Print only the message
                      */
);

вот так вызывается:

C++
1
2
3
4
#include <test.h>
...
 
UF_print_syslog(";\n", FALSE);
VS подчеркивает ";\n" красным цветом и выдает ошибку:

Серьезность Код Описание Проект Файл Строка Состояние подавления
Ошибка (активно) E0167 аргумент типа "const char *" несовместим с параметром типа "char *" Dll3 e:\rabota\C++\Dll3\Dll3\Dll3.cpp 105


Код взят из другого проекта, там такой ошибки нет. Ошибка только в моем , который создал с нуля, и надергал код из проекта для примера
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.09.2018, 19:46
Ответы с готовыми решениями:

Аргумент типа "unsigned char*" несовместим с параметром типа "const char*"
int f(unsigned char s, unsigned char q) { N = strlen(s); //Ошибка тут... M = strlen(q); //...и...

Ошибка: аргумент типа "const char *" несовместим с параметром типа "LPCWSTR"
Здравствуйте я хочу запустить музыку в консоли с++, но мне выдает ошибку: аргумент типа &quot;const char...

Аргумент типа "const char*" несовместим с параметром типа "LPCWSTR"
хочу запустить paint с visual studio но выдает ошибку под словами open, filename, строка 6#include...

Аргумент типа "const char *" несовместим с параметром типа "char *"
Sourse.cpp: #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &quot;Account.h&quot; using namespace std;...

Ошибка: "аргумент типа const char несовместим с параметром типа char*"
Существует много файловый проект на с++ 1)feed.cpp 2)feed.h 3)Source.cpp В файле feed.h...

11
TheCalligrapher
С чаем беда...
Эксперт CЭксперт С++
6055 / 2891 / 788
Регистрация: 18.10.2014
Сообщений: 5,301
24.09.2018, 19:55 2
Цитата Сообщение от Alllexx4 Посмотреть сообщение
выдает ошибку

И? Да, ошибка есть, именно такая, как сказал компилятор. В чем ваш вопрос-то?
1
TRam_
зомбяк
1340 / 1018 / 295
Регистрация: 14.05.2017
Сообщений: 3,340
24.09.2018, 19:56 3
Цитата Сообщение от Alllexx4 Посмотреть сообщение
Код взят из другого проекта, там такой ошибки нет.
Там точно
C++
1
2
UF_print_syslog(
       char *message
а не
C++
1
2
UF_print_syslog(
       const char *message
Если точно, то смотри опции проекта, что выбран язык С а не С++. А так можно было бы проправить например так:

C++
1
2
char str_end[] = ";\n";
UF_print_syslog(str_end, FALSE);
0
Kuzia domovenok
2959 / 2516 / 653
Регистрация: 25.03.2012
Сообщений: 8,981
Записей в блоге: 1
Завершенные тесты: 1
24.09.2018, 20:12 4
Цитата Сообщение от Alllexx4 Посмотреть сообщение
Код взят из другого проекта, там такой ошибки нет. Ошибка только в моем , который создал с нуля, и надергал код из проекта для примера
не надо дёргать говнокод и ошибок таких не будет.
Компилятор совершенно справедливо ругается.
И тут уже одно из двух, 1) функцию создавал говнокодер, и она в принципе не изменяет строковый аргумент, просто говнокодер забыл написать const char* в её сигнатуре. Тогда ещё можно это упущение исправить - исправить сигнатуру.
2) тут уже ничего не исправишь, только полноценный символьный буфер передавать в функцию, никаких литералов вам в кавычках.
0
24.09.2018, 20:12
hoggy
Эксперт С++
7646 / 3450 / 717
Регистрация: 15.11.2014
Сообщений: 7,878
Завершенные тесты: 1
24.09.2018, 20:16 5
const_cast? не, не слышал
0
TRam_
зомбяк
1340 / 1018 / 295
Регистрация: 14.05.2017
Сообщений: 3,340
24.09.2018, 20:31 6
hoggy, const_cast только если есть уверенность, что в UF_print_syslog сделанно всё без перезаписей в *message . Иначе будет вылетать.
0
Alllexx4
4 / 4 / 0
Регистрация: 16.04.2013
Сообщений: 36
24.09.2018, 21:08  [ТС] 7
Цитата Сообщение от TRam_ Посмотреть сообщение
Если точно, то смотри опции проекта, что выбран язык С а не С++.

Точно ) Я опции обоих проектов уже раз пять сравнивал, где выбирается C или C++?

Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
не надо дёргать говнокод и ошибок таких не будет.
Есть такая Cad/Cam программа, называется Siemens NX. У нее есть NXOpen. Я пытаюсь через этот NxOpen написать свою User Command. Пример, как это сделать, я взял с хелпа по Siemens . Так что если че, это ихний код ))). Создал проект в VS 2017 динамической Dll и скопировал кот со ссылки туда. Инклудники и lib подключил, появилась только вот эта ошибка.

Еще на просторах инета я нашел уже готовый проект в VS, где вызываются теже функции, но там почему то этой ошибки нет. Первый скрин, это проект из инета, второй, созданный мной, со вставленным кодом из хелпа.

Так получается касяк в не правильном выборе языка?
0
Миниатюры
Найти причины возникновения ошибки: аргумент типа "const char *" несовместим с параметром типа "char *"   Найти причины возникновения ошибки: аргумент типа "const char *" несовместим с параметром типа "char *"  
Kuzia domovenok
2959 / 2516 / 653
Регистрация: 25.03.2012
Сообщений: 8,981
Записей в блоге: 1
Завершенные тесты: 1
24.09.2018, 21:36 8
да пропиши ты const char* message
явно ничего плохого не будет!
1
Alllexx4
4 / 4 / 0
Регистрация: 16.04.2013
Сообщений: 36
02.10.2018, 11:41  [ТС] 9
Разобрался я что к чему. Создал dll. Подключил ее к программе.
у меня все нормально работает, передаю на другой копм, там не работает. Полазил по инету, написано вроде Использование MFC -> использование MFC в статической библиотеке поставить, не помогло...

есть еще пути решения какие нибудь? VS++ 2015 и 2017 на другой комп ставил, что же там саму VS ставить?
0
lArtl
312 / 165 / 77
Регистрация: 09.10.2014
Сообщений: 796
Завершенные тесты: 3
02.10.2018, 12:37 10
Цитата Сообщение от Alllexx4 Посмотреть сообщение
есть еще пути решения какие нибудь? VS++ 2015 и 2017 на другой комп ставил, что же там саму VS ставить?
выделить память под строку и туда скопировать свой ";\n"
0
politoto
787 / 396 / 45
Регистрация: 23.07.2018
Сообщений: 1,005
Записей в блоге: 2
02.10.2018, 13:36 11
Цитата Сообщение от Alllexx4 Посмотреть сообщение
VS++ 2015 и 2017 на другой комп ставил, что же там саму VS ставить?
Чтобы работали программы, собранные не статически, у пользователей должен быть установлен пакет соответствующего Runtime
https://support.microsoft.com/en-us/...al-c-downloads
Для разных версий Visual C++ он свой.
0
Alllexx4
4 / 4 / 0
Регистрация: 16.04.2013
Сообщений: 36
02.10.2018, 15:28  [ТС] 12
Цитата Сообщение от politoto Посмотреть сообщение
Runtime
Так в том и дело, что все стоит
Цитата Сообщение от politoto Посмотреть сообщение
собранные не статически
А как собрать статически?
Цитата Сообщение от Alllexx4 Посмотреть сообщение
использование MFC в статической библиотеке
Вот это для этого надо выбирать?
0
02.10.2018, 15:28
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.10.2018, 15:28

"Аргумент типа char несовместим с параметром типа const char"
Программа должна перевести все символы до * в число,но что то пошло не так. P.S прошу не ругать....

Ошибка аргумент типа "char" несовместим с параметром типа "LPCSTR"
char result; result=printf(&quot;%d %d&quot;, &quot;test.php?id=&quot;,id); HINTERNET hHttpRequest = HttpOpenRequest(...

Аргумент типа "char *" несовместим с параметром типа "LPCWSTR"
Что такое и с чем его едят 1 IntelliSense: аргумент типа &quot;char *&quot; несовместим с параметром типа...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

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