Premnath Mali Ответов: 1

Как решить ошибку C2668: 'ATL:: inlineisequalunknown' : неоднозначный вызов перегруженной функции


Я использую Visual studio 2008 и хочу использовать класс CRegKey
для этого я просто включаю файл atlbase.h и после компиляции получаю следующую ошибку

Я нигде ничего не использовал из этого файла я просто включил файл и скомпилировал вот и все

Ошибка 1 ошибка C2668: 'ATL:: InlineIsEqualUnknown': неоднозначный вызов перегруженной функции C:\Program файлы (x86)\Microsoft Visual Studio 9.0\VC\atlmfc\include\atlbase. inl 254

Что я уже пробовал:

#include "afxwin.h"
#include "Student.h"
#include "Teacher.h"
#include "Settings.h"
#include "About.h"
#include "BaseDlg.h"
#include "Label.h"
#include "XPButton.h"
//Here I included the atlbase.h file if i remove this statement then error is not coming
#include "atlbase.h"

[no name]

Это не очень хороший вопрос. Публикация заголовочного файла ATL в разделе "Что я пробовал:" не добавляет никакой информации. Лучше всего опубликовать фрагмент вашего кода и объяснить проблему. Ошибка C2668 имеет множество хитов Google, и некоторые из них, вероятно, применимы к вам.
Воспользуйся Улучшить вопрос.

Premnath Mali

Сэр ошибка отображается в этом файле вот почему я поместил код под то что я пробовал
Теперь я добавил какой-то код, все еще получающий ту же ошибку

Jochen Arndt

Пожалуйста, покажите верхнюю часть исходного файла со всеми директивами include и using (namespace).

КСТАТИ:
Вы должны установить
ULONG lrn = MAX_PATH;
чтобы сообщить CRegKey:: QueryStringValue () размер буфера.

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

Premnath Mali

Сэр в моем проекте если я включаю этот файл то эта ошибка показывает если я удаляю этот оператор include то все в порядке мое приложение работает точно
пожалуйста помочь

Jochen Arndt

Когда вы не получили никакой ошибки без включения atlbase.h, она уже включена. Однако тогда ошибки быть не должно.

Вы пометили свой вопрос с помощью MFC. Затем по умолчанию используются предварительно скомпилированные заголовки, которые требуют включения stdafx.h. но вы его не включили. Вы отключили использование предварительно скомпилированных заголовков?

При использовании предварительно скомпилированных заголовков включите stdafx.h в качестве самого первого файла.
Затем включите afxwin.h и atlbase.h из stdafx.h тоже (если это еще не сделано).

Premnath Mali

Это правильное решение для этой ошибки спасибо
Теперь мое приложение работает успешно я включил эти заголовочные файлы как вы сказали

можете ли вы отправить то же самое, что и решение, чтобы я мог принять ваше решение, может быть, это будет полезно для других

Jochen Arndt

Спасибо Вам за ваши отзывы.

Я добавил решение. Насколько я понимаю, источник ошибки был забыт включить stdafx.h.

Premnath Mali

Тот же код, который я пробовал в новом проекте, я включил этот файл и использовал код, как он использует ваше предложение "ULONG lrn=MAX_PATH;" он работает нормально, спасибо за это, но в моем основном проекте все еще есть ошибка

1 Ответов

Рейтинг:
4

Jochen Arndt

Вы пометили свой вопрос с помощью MFC. Затем по умолчанию используются предварительно скомпилированные заголовки, которые требуют включения файл stdafx.ч.

Так что я думаю, что вы забыли включить файл stdafx.ч в вашем исходном файле.

Затем файл stdafx.ч очень вероятно включает в себя момента atlbase.ч уже (непосредственно с помощью оператора include или косвенно с помощью других файлов). Потому что ваши файлы компилируются без ошибок, когда они не включены момента atlbase.ч в исходных файлах это будет иметь место здесь (в противном случае были бы ошибки о неизвестных идентификаторах).

Я не совсем уверен, что произошло на самом деле, но забывание включить этот файл может иметь много побочных эффектов.

Заметим также, что afxwin.ч также уже включен файл stdafx.ч. Таким образом, верхняя часть вашего исходного файла должна выглядеть следующим образом:

// Include stdafx.h on top of all source files
//  before including any other file
#include "stdafx.h"
#include "Student.h"
#include "Teacher.h"
#include "Settings.h"
#include "About.h"
#include "BaseDlg.h"
#include "Label.h"
#include "XPButton.h"
// ATL and MFC system header files (afx*.h, atl*.h) should be included by stdafx.h


[no name]

Отлично сработано.

Premnath Mali

Я задал еще один вопрос пожалуйста помогите мне решить
https://www.codeproject.com/Questions/1173553/How-to-create-save-and-retrieve-DWORD-value-to-reg

Premnath Mali

Пожалуйста, помогите мне решить эту проблему
https://www.codeproject.com/Questions/1174361/Asynchronous-method-invocation-in-mfc