Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

Войти
Регистрация
Восстановить пароль
 
Vasiliyy
1 / 1 / 0
Регистрация: 13.11.2015
Сообщений: 177
#1

Error C2664: Преобразование аргументов - C++

14.04.2016, 00:05. Просмотров 933. Ответов 13
Метки нет (Все метки)

При компиляции выскочили следующие ошибки:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
1>dllmain.cpp(38): error C2664: "uintptr_t _beginthread(void (__cdecl *)(void *),unsigned int,void *)": невозможно преобразовать аргумент 1 из "void (__stdcall *)(void *)" в "void (__cdecl *)(void *)"
1>          Конечному типу не соответствует ни одной функции с данным именем в области видимости
1>dllmain.cpp(56): error C2664: "void SAMPFramework::addClientCommand(char *,CMDPROC)": невозможно преобразовать аргумент 2 из "void (__stdcall *)(char *)" в "CMDPROC"
1>          Конечному типу не соответствует ни одной функции с данным именем в области видимости
1>dllmain.cpp(57): error C2664: "void SAMPFramework::addClientCommand(char *,CMDPROC)": невозможно преобразовать аргумент 2 из "void (__stdcall *)(char *)" в "CMDPROC"
1>          Конечному типу не соответствует ни одной функции с данным именем в области видимости
1>dllmain.cpp(58): error C2664: "void SAMPFramework::addClientCommand(char *,CMDPROC)": невозможно преобразовать аргумент 2 из "void (__stdcall *)(char *)" в "CMDPROC"
1>          Конечному типу не соответствует ни одной функции с данным именем в области видимости
1>dllmain.cpp(191): error C2664: "uintptr_t _beginthread(void (__cdecl *)(void *),unsigned int,void *)": невозможно преобразовать аргумент 1 из "void (__stdcall *)(void *)" в "void (__cdecl *)(void *)"
1>          Конечному типу не соответствует ни одной функции с данным именем в области видимости


38 строка:
Кликните здесь для просмотра всего текста
C++
1
_beginthread(reconnectThread, NULL, NULL);

191 строка:
Кликните здесь для просмотра всего текста
C++
1
_beginthread(mainThread, NULL, NULL);

56 строка = 57 и 58 строки:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
pSAMP->addClientCommand("test", cmd_test);
// функция:
void SAMPFramework::addClientCommand(char *szCmd, CMDPROC pFunc)
{
    if (g_Input == nullptr)
        return;
 
    void(__thiscall *AddClientCommand) (const void *_this, char *szCommand, CMDPROC pFunc) =
        (void(__thiscall *) (const void *, char *, CMDPROC)) (dwSAMPAddr + SAMP_FUNC_ADDCLIENTCMD);
 
    if (szCmd == NULL)
        return;
 
    return AddClientCommand(g_Input, szCmd, pFunc);
}
//
void cmd_test(char *szParams)
{
    pSAMP->addMessageToChat(0xFFFFFFFF, "Test command with params: "%s"", szParams);
}

Помогите исправить это пожалуйста.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.04.2016, 00:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Error C2664: Преобразование аргументов (C++):

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...

error C2664 - C++
ошибка: error C2664: 'strcmp' : cannot convert parameter 1 from 'int' to 'const char *' вот к этому коду: case '3': // Поиск...

error C2664 - C++
Помогите пожалуйста исправить ошибку : ошибка: Ошибка 1 error C2664: void ATL::CStringT<BaseType,StringTraits>::Format(const wchar_t...

Ошыбка - error C2664 - C++
Тренируюсь по видео уроку писать игрушку волейбол и возникла ошибка - error C2664: 'glutSpecialFunc' : cannot convert parameter 1 from...

Ошибка error C2664 - C++
Не могу понять в чем ошибка, все из-за того что поменял компилятор, старый работал нормально, никаких ошибок не выдавал. Сейчас VS 2012 ...

Шаблоны и error C2664 - C++
Всем доброго времени суток!!! В общем, есть класс template <class Info> class SimpleClientManager { public: ...

13
nmcf
6206 / 5517 / 1932
Регистрация: 14.04.2014
Сообщений: 23,155
14.04.2016, 09:17 #2
Соглашение о вызове не совпадает. _beginthread() ожидает cdecl, а ты передаёшь stdcall.
1
Vasiliyy
1 / 1 / 0
Регистрация: 13.11.2015
Сообщений: 177
14.04.2016, 23:02  [ТС] #3
up.
0
nmcf
6206 / 5517 / 1932
Регистрация: 14.04.2014
Сообщений: 23,155
14.04.2016, 23:26 #4
Ты исправил?
0
Vasiliyy
1 / 1 / 0
Регистрация: 13.11.2015
Сообщений: 177
15.04.2016, 01:26  [ТС] #5
nmcf, нет, не пойму где это исправлять надо, функции _beginthread нет ни в каком файле.

Добавлено через 9 минут
В process.h нашел обьявление и определение beginthread, может поможет чем-то.
C++
1
2
3
_CRTIMP uintptr_t __cdecl * _beginthread (_In_ void (__cdecl * _StartAddress) (void *),
        _In_ unsigned _StackSize, _In_opt_ void * _ArgList);
_CRTIMP void __cdecl _endthread(void);
0
nmcf
6206 / 5517 / 1932
Регистрация: 14.04.2014
Сообщений: 23,155
15.04.2016, 08:45 #6
reconnectThread() и mainThread() как объявлены? Сделай, чтобы они __cdecl были.
Это что за библиотека вообще?
0
DrOffset
7517 / 4513 / 1025
Регистрация: 30.01.2014
Сообщений: 7,362
15.04.2016, 10:14 #7
Цитата Сообщение от nmcf Посмотреть сообщение
Это что за библиотека вообще?
Это CRT API Винды. Функции для создания потока.

По теме: автор, не надо сюда постить библиотечный код. Пости свой.
Объявления своих функций mainThread и reconnectThread покажи.
0
Vasiliyy
1 / 1 / 0
Регистрация: 13.11.2015
Сообщений: 177
18.04.2016, 14:07  [ТС] #8
DrOffset,
Цитата Сообщение от DrOffset Посмотреть сообщение
Объявления своих функций mainThread и reconnectThread покажи.
C++
1
2
3
4
void mainThread(void *pvParams)
{
 
}
reconnectThread не нужно.
0
nmcf
6206 / 5517 / 1932
Регистрация: 14.04.2014
Сообщений: 23,155
18.04.2016, 14:22 #9
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
А так?
C++
1
void __cdecl mainThread(void *pvParams)
1
Vasiliyy
1 / 1 / 0
Регистрация: 13.11.2015
Сообщений: 177
18.04.2016, 15:22  [ТС] #10
nmcf, да спасибо, скомпилировалось, но при проверке через пару сек - краш. Буду выяснять как исправить
0
nmcf
6206 / 5517 / 1932
Регистрация: 14.04.2014
Сообщений: 23,155
18.04.2016, 15:30 #11
Ну дело уже не в _beginthread(), значит.
А зачем ты эти странные функции используешь? Есть же <thread>.
0
Vasiliyy
1 / 1 / 0
Регистрация: 13.11.2015
Сообщений: 177
18.04.2016, 15:46  [ТС] #12
nmcf, такое было в одном плагине, и я весь его состав перекидаю в другой. Я выяснил причину краша, тут не выполняется условие:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//main.cpp
while (!pSAMP->tryInit()) Sleep(100);
// .h файл
#define SAMP_INFO_OFFSET    0x21A0F8
struct stSAMP *getInfo(void) { return g_SAMP; };
bool tryInit(void)
{
    CLog::Write("tryInit(void)");
    g_SAMP = *(stSAMP **) (dwSAMPAddr + SAMP_INFO_OFFSET);
    if (g_SAMP == nullptr)
    {
        CLog::Write("g_SAMP == nullptr");
        return false;
    }
............
 }
//ниже private:
struct stSAMP *g_SAMP = 0x0;
Так вот в логах часто пишется "tryInit(void)" и "g_SAMP == nullptr", значит это условие не выполняется. Как исправить это?
0
nmcf
6206 / 5517 / 1932
Регистрация: 14.04.2014
Сообщений: 23,155
18.04.2016, 16:05 #13
dwSAMPAddr надо смотреть, наверное.
0
Vasiliyy
1 / 1 / 0
Регистрация: 13.11.2015
Сообщений: 177
18.04.2016, 17:27  [ТС] #14
nmcf,
C++
1
2
3
//ниже private:
struct stSAMP *g_SAMP = 0x0;
DWORD dwSAMPAddr = 0x0;
вот так, не дописал dwSAMPAddr просто.
0
18.04.2016, 17:27
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2016, 17:27
Привет! Вот еще темы с ответами:

Error C2664 в cin.getline() - C++
Всем привет.Пишу телефонную книгу в консоли ,при попытке заполнить поля структуры вылазит ряд ошибок ,типа error C2664:...

error C2664:невозможно преобразовать параметр - C++
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; #include &lt;cstring&gt; #define q 250 struct sanat{ string Name; ...

error C2664:невозможно преобразовать параметр - C++
/*************************************************** * Программа: Квадратный трехчлен * * Лаб. работа: 5 ...

error C2664: платформа Visual C++ 2008 - C++
Всем доброго времени суток! Изучаю сейчас Visual Studio 2008. Компилятор выдает вот такую ошибку: error C2440: приведение типов:...


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

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

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