error C2065: 'static_pointer_cast' : undeclared identifier - Visual Studio 2010 - c++

I am trying to static cast a std::shared_ptr to its base class. Given the classes:
class ImportFileSetting {};
class ImportFileSettingSelect:ImportFileSetting {}
I tried the following code:
std::shared_ptr<ImportFileSettingSelect> selectedSheet_ = std::make_shared<ImportFileSettingSelect>();
std::vector<std::shared_ptr<ImportFileSetting>> settings_;
settings_.push_back(static_pointer_cast<ImportFileSetting>(selectedSheet_));
which I found according to cppreference.com. But it fails to compile with:
5>src\TechAdminServices\database\techCore\processes\ImportDataSourceExcel.cpp(32): error C2065: 'static_pointer_cast' : undeclared identifier
5>src\TechAdminServices\database\techCore\processes\ImportDataSourceExcel.cpp(32): error C2275: 'ImportFileSetting' : illegal use of this type as an expression
5> d:\techsys\techadmin\techadminservices\src\techadminservices\database\techcore\processes\ImportFileSetting.h(7) : see declaration of 'ImportFileSetting'
How do I fix this?

You're missing the namespace:
settings_.push_back(std::static_pointer_cast<ImportFileSetting>(selectedSheet_));
// ^^^^^

Related

boost::variate_generator syntax error

may I please seek some help with the issue I am having.
I have the typedef
typedef boost::random::mt19937 my_rng;
typedef boost::math::students_t my_st;
and then the following:
my_rng rng(0) ;
my_st st(3);
boost::random::variate_generator<my_rng&, my_st > noise(rng, st);
The compilation error that I get is (I am using visual studio 13 in windows 7) :
1>C:\boost\boost_1_61_0\boost/random/variate_generator.hpp(59): error C2039: 'result_type' : is not a member of
'boost::math::students_t_distribution>'
1> ....\test.cpp(183) : see reference to class template instantiation 'boost::random::variate_generator' being compiled
1>C:\boost\boost_1_61_0\boost/random/variate_generator.hpp(59): error C2146: syntax error : missing ';' before identifier 'result_type'
1>C:\boost\boost_1_61_0\boost/random/variate_generator.hpp(59): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>C:\boost\boost_1_61_0\boost/random/variate_generator.hpp(59): error C2602: 'boost::random::variate_generator::result_type' is not a member of a base class of 'boost::random::variate_generator'
1> C:\boost\boost_1_61_0\boost/random/variate_generator.hpp(59) : see declaration of 'boost::random::variate_generator::result_type'
1>C:\boost\boost_1_61_0\boost/random/variate_generator.hpp(59): error C2868: 'boost::random::variate_generator::result_type' : illegal syntax for using-declaration; expected qualified-name
Can someone please give me some pointers how to fix this. Thanks in advance.
boost:math::students_t does not satisfy the concept of a Random Distribution. Use boost::random::student_t_distribution instead.

Declaration of templated class member function returning a map

In VC++ 2015 I have an untemplated class which should have a templated memberfunction which returns a map.
Here is a bit of the code:
class Registry
{
template<class configclass>
std::map<std::wstring, configclass> enumerateSubKeys(std::wstring subKeyName);
}
But the compiler throws error messages:
error C2988: Unrecognized template declaration/definition
error C2143: Syntax error: missing ";" before "<"
error C2238: Unexpected Token before ";"
error C2059: Syntax error: "<"
I assume my problem is in having to use a map where the wstring has to be fixed/untemplated but the second argument is my template class.
Of course i followed the compilers suggestions but that didn't get me any further.
You need to #include <map> and add a semi-colon to the end of your class declaration.
As #Kevin and #juanchopanza have pointed out in the comments, you are simply missing a semi-colon and potentially an include. With the following program in VS2013:
class Registry
{
template<class configclass>
std::map<std::wstring, configclass> enumerateSubKeys(std::wstring subKeyName);
}
int main()
{
}
I get an assortment of the errors you listed:
error C2143 : syntax error : missing ';' before '<'
error C2238 : unexpected token(s) preceding ';'
error C2988 : unrecognizable template declaration / definition
error C2059 : syntax error : '<'
And also:
error C2039 : 'map' : is not a member of 'std'
Once I add an include for std::map, the errors are reduced:
#include <map>
class Registry
{
template<class configclass>
std::map<std::wstring, configclass> enumerateSubKeys(std::wstring subKeyName);
}
error C2628 : 'Registry' followed by 'int' is illegal(did you forget a ';' ? )
Which suggests you are missing a semi-colon at the end of the class declaration.

Using member function of Class in a Vector [closed]

Closed. This question needs debugging details. It is not currently accepting answers.
Edit the question to include desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem. This will help others answer the question.
Closed 7 years ago.
Improve this question
EDIT: You need to make a vector like this:
vector myVector(5);
not like this:
vector myVector[5];
Instead of vector<team> players[5]; vector<team> players(5); has to be. With this operation you'll create a vector of 5 players. In your code 5 empty vectors are created.
You should get a lot more errors, actually. I get the following:
cl /nologo /EHsc /Za /W4 stackoverflow.cpp
stackoverflow.cpp
stackoverflow.cpp(5) : error C2146: syntax error : missing ';' before identifier 'name'
stackoverflow.cpp(5) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
stackoverflow.cpp(9) : error C2061: syntax error : identifier 'string'
stackoverflow.cpp(10) : error C2146: syntax error : missing ';' before identifier 'getName'
stackoverflow.cpp(10) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
stackoverflow.cpp(10) : warning C4183: 'getName': missing return type; assumed to be a member function returning 'int'
stackoverflow.cpp(22) : error C2511: 'void team::setName(std::string)' : overloaded member function not found in 'team'
stackoverflow.cpp(3) : see declaration of 'team'
stackoverflow.cpp(23) : error C2065: 'name' : undeclared identifier
stackoverflow.cpp(23) : error C2065: 'b' : undeclared identifier
stackoverflow.cpp(30) : error C2556: 'std::string team::getName(void)' : overloaded function differs only by return type from 'int team::getName(void
stackoverflow.cpp(10) : see declaration of 'team::getName'
stackoverflow.cpp(30) : error C2371: 'team::getName' : redefinition; different basic types
stackoverflow.cpp(10) : see declaration of 'team::getName'
stackoverflow.cpp(31) : error C2065: 'name' : undeclared identifier
stackoverflow.cpp(42) : error C2039: 'setRuns' : is not a member of 'std::vector<team,std::allocator<_Ty>>'
with
[
_Ty=team
]
stackoverflow.cpp(43) : error C2039: 'setName' : is not a member of 'std::vector<team,std::allocator<_Ty>>'
with
[
_Ty=team
]
stackoverflow.cpp(45) : error C2039: 'getName' : is not a member of 'std::vector<team,std::allocator<_Ty>>'
with
[
_Ty=team
]
stackoverflow.cpp(45) : error C2039: 'getRuns' : is not a member of 'std::vector<team,std::allocator<_Ty>>'
with
[
_Ty=team
]
Class names of the C++ standard library are prefixed with std::. That's just part of their name. It is good practice to just always use the full name. In particular, it is very bad practice to use using namespace std; at global scope in a header file.
So let's remove using namespace std and write std:: everywhere.
team.h:
#include<string>
class team {
std::string name;
int runs;
public:
void setName(std::string a);
std::string getName();
void setRuns(int b);
int getRuns();
};
team.cpp:
#include<string>
#include "team.h"
void team::setRuns(int b) {
runs=b;
}
void team::setName(std::string a) {
name=b;
}
int team::getRuns() {
return runs;
}
std::string team::getName() {
return name;
}
main.cpp:
#include<iostream>
#include<vector>
#include<cstdio>
#include "team.h"
int main() {
std::vector<team> players[5];
players[0].setRuns(10);
players[0].setName("Michael");
printf("%s %d",players[0].getName(),players[0].getRuns());
system("pause");
return 0;
}
This removes most errors:
stackoverflow.cpp(22) : error C2065: 'b' : undeclared identifier
stackoverflow.cpp(39) : error C2039: 'setRuns' : is not a member of 'std::vector<team,std::allocator<_Ty>>'
with
[
_Ty=team
]
stackoverflow.cpp(40) : error C2039: 'setName' : is not a member of 'std::vector<team,std::allocator<_Ty>>'
with
[
_Ty=team
]
stackoverflow.cpp(42) : error C2039: 'getName' : is not a member of 'std::vector<team,std::allocator<_Ty>>'
with
[
_Ty=team
]
stackoverflow.cpp(42) : error C2039: 'getRuns' : is not a member of 'std::vector<team,std::allocator<_Ty>>'
with
[
_Ty=team
]
The a in setRuns is certainly a typo. We'll also fix that. I'll also just remove the unnecessary system("pause");. Now we have code which exhibits only the error you asked about.
Let's take a closer look at the following line:
std::vector<team> players[5]
I think the misunderstanding here is that [5] specifies the size of the std::vector. This is a misconception. A std::vector has no fixed size and will start at 0 elements by default. It does not need any [] syntax for initialization. The [] syntax here denotes an array. An array is a fixed-size collection of elements.
So what you created here is an array of 5 vectors. Apparently, that's not at all what you wanted. Just replace the [5] with (5) to get the meaning of "vector that starts with 5 elements":
std::vector<team> players(5);
Now it compiles. But it will probably crash at run-time, because you also use printf incorrectly:
printf("%s %d",players[0].getName(),players[0].getRuns());
printf is a C function which was designed long before C++ existed. %s means that a C-style string is expected. You could provide one like this:
printf("%s %d",players[0].getName().c_str(),players[0].getRuns());
Or you just use C++ streams:
std::cout << players[0].getName() << " " << players[0].getRuns();

Model_Test for Qt 5?

In the past (Qt 4.8), I've used the modeltest class to test QAbstractItemModel implementations. However, it seems with Qt 5 they've broken compatibility as a slew of errors erupts when trying to compile it out of the box, including calls to functions like reset() which are no longer members of QAbstractItemModel.
Does anyone know of an updated repository, or has anyone fixed modeltest of their own accord? I'm specifically using Qt 5.3.1.
ERRORS:
C:\Documents\Visual Studio 2013\Projects\modeltest\dynamictreemodel.cpp(306): error C2039: 'reset' : is not a member of 'DynamicTreeModel'
1> c:\documents\visual studio 2013\projects\modeltest\dynamictreemodel.h(51) : see declaration of 'DynamicTreeModel'
1> modeltest.cpp
1>C:\Documents\Visual Studio 2013\Projects\modeltest\modeltest.cpp(419): error C2065: 'qVariantCanConvert' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\modeltest.cpp(419): error C2275: 'QString' : illegal use of this type as an expression
1> C:\Qt\qt-5.3.1-x64-msvc2010-opengl\qt-5.3.1-x64-msvc2010-opengl\include\QtCore/qstring.h(213) : see declaration of 'QString'
1>C:\Documents\Visual Studio 2013\Projects\modeltest\modeltest.cpp(423): error C2065: 'qVariantCanConvert' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\modeltest.cpp(423): error C2275: 'QString' : illegal use of this type as an expression
1> C:\Qt\qt-5.3.1-x64-msvc2010-opengl\qt-5.3.1-x64-msvc2010-opengl\include\QtCore/qstring.h(213) : see declaration of 'QString'
1>C:\Documents\Visual Studio 2013\Projects\modeltest\modeltest.cpp(427): error C2065: 'qVariantCanConvert' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\modeltest.cpp(427): error C2275: 'QString' : illegal use of this type as an expression
1> C:\Qt\qt-5.3.1-x64-msvc2010-opengl\qt-5.3.1-x64-msvc2010-opengl\include\QtCore/qstring.h(213) : see declaration of 'QString'
1>C:\Documents\Visual Studio 2013\Projects\modeltest\modeltest.cpp(433): error C2065: 'qVariantCanConvert' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\modeltest.cpp(433): error C2275: 'QSize' : illegal use of this type as an expression
1> C:\Qt\qt-5.3.1-x64-msvc2010-opengl\qt-5.3.1-x64-msvc2010-opengl\include\QtCore/qsize.h(51) : see declaration of 'QSize'
1>C:\Documents\Visual Studio 2013\Projects\modeltest\modeltest.cpp(439): error C2065: 'qVariantCanConvert' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\modeltest.cpp(439): error C2275: 'QFont' : illegal use of this type as an expression
1> C:\Qt\qt-5.3.1-x64-msvc2010-opengl\qt-5.3.1-x64-msvc2010-opengl\include\QtGui/qfont.h(58) : see declaration of 'QFont'
1>C:\Documents\Visual Studio 2013\Projects\modeltest\modeltest.cpp(452): error C2065: 'qVariantCanConvert' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\modeltest.cpp(452): error C2275: 'QColor' : illegal use of this type as an expression
1> C:\Qt\qt-5.3.1-x64-msvc2010-opengl\qt-5.3.1-x64-msvc2010-opengl\include\QtGui/qcolor.h(65) : see declaration of 'QColor'
1>C:\Documents\Visual Studio 2013\Projects\modeltest\modeltest.cpp(457): error C2065: 'qVariantCanConvert' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\modeltest.cpp(457): error C2275: 'QColor' : illegal use of this type as an expression
1> C:\Qt\qt-5.3.1-x64-msvc2010-opengl\qt-5.3.1-x64-msvc2010-opengl\include\QtGui/qcolor.h(65) : see declaration of 'QColor'
1> tst_modeltest.cpp
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(114): error C2065: 'QTreeWidget' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(114): error C2146: syntax error : missing ';' before identifier 'widget'
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(114): error C2065: 'widget' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(116): error C2065: 'widget' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(116): error C2228: left of '.model' must have class/struct/union
1> type is 'unknown-type'
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(116): error C2512: 'ModelTest' : no appropriate default constructor available
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(118): error C2065: 'QTreeWidgetItem' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(118): error C2065: 'root' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(118): error C2061: syntax error : identifier 'QTreeWidgetItem'
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(120): error C2061: syntax error : identifier 'QTreeWidgetItem'
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(122): error C2065: 'QTreeWidgetItem' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(122): error C2065: 'root' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(122): error C2227: left of '->child' must point to class/struct/union/generic type
1> type is 'unknown-type'
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(123): error C2065: 'root' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(123): error C2227: left of '->removeChild' must point to class/struct/union/generic type
1> type is 'unknown-type'
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(124): error C2065: 'QTreeWidgetItem' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(124): error C3867: 'QObject::parent': function call missing argument list; use '&QObject::parent' to create a pointer to member
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(124): error C2061: syntax error : identifier 'QTreeWidgetItem'
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(126): error C2065: 'widget' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(126): error C2228: left of '.setItemHidden' must have class/struct/union
1> type is 'unknown-type'
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(126): error C3867: 'QObject::parent': function call missing argument list; use '&QObject::parent' to create a pointer to member
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(128): error C2065: 'widget' : undeclared identifier
1>C:\Documents\Visual Studio 2013\Projects\modeltest\tst_modeltest.cpp(128): error C2228: left of '.sortByColumn' must have class/struct/union
It seems like this can be fixed with a few easy steps:
The reset() error is testing a deprecated function, and can be commented out.
The qVariantCanConvert errors can be fixed by following the advice here on transitioning from Qt 4.8 to Qt 5
The rest of the errors can be solved by making sure all the appropriate headers are included.

EnterCriticalSection identifier not found

Ok, I'm compiling a project that is using the Chromium Embedded Framework 3. I'm using Windows 7 64-bit with Visual Studio 2013 RC. Officially, VS2013 RC is not supported by CEF3. However, I require VS2013 due to C++11 features that are only available in VS2013.
I downloaded the CEF3 64 bit binaries, and compiled their sample application using VS2013. It worked beautifully (although I had to add the <algorithm> header file to some of the cef3 header files).
Now, when I include some of the CEF3 files into my project, I'm getting a bunch of compile errors. I'm using SCons to compile my project. It looks almost like some variables and defines are not getting set/called when the CEF3 header file(s) include the <windows.h> header file...
The errors are:
scons: Reading SConscript files ...
scons: done reading SConscript files.
scons: Building targets ...
cl /Fobuild\gui\GUI.obj /c src\gui\GUI.cpp /TP /w /wd4350 /EHsc /MD /DDEBUG /DPACKAGE_VERSION=\"0.0.1\" /DPACKAGE_BUGREPORT=\"https://github.com/jarrettchisholm/glr/issues\" /DBOOST_SPIRIT_USE_PHOENIX_V3
cl /Fobuild\gui\HtmlGuiComponent.obj /c src\gui\HtmlGuiComponent.cpp /TP /w /wd4350 /EHsc /MD /DDEBUG /DPACKAGE_VERSION=\"0.0.1\" /DPACKAGE_BUGREPORT=\"https://github.com/jarrettchisholm/glr/issues\" /DBOOST_SPIRIT_USE_PHOENIX_V3
GUI.cpp
HtmlGuiComponent.cpp
cl /Fobuild\models\ModelManager.obj /c src\models\ModelManager.cpp /TP /w /wd4350 /EHsc /MD /DDEBUG /DPACKAGE_VERSION=\"0.0.1\" /DPACKAGE_BUGREPORT=\"https://github.com/jarrettchisholm/glr/issues\" /DBOOST_SPIRIT_USE_PHOENIX_V3
ModelManager.cpp
cl /Fobuild\glw\Animation.obj /c src\glw\Animation.cpp /TP /w /wd4350 /EHsc /MD /DDEBUG /DPACKAGE_VERSION=\"0.0.1\" /DPACKAGE_BUGREPORT=\"https://github.com/jarrettchisholm/glr/issues\" /DBOOST_SPIRIT_USE_PHOENIX_V3
Animation.cpp
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(55) : error C2146: syntax error : missing ';' before identifier 'instance'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(55) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(70) : error C2146: syntax error : missing ';' before identifier 'parent_window'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(70) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(71) : error C2146: syntax error : missing ';' before identifier 'menu'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(71) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(86) : error C2146: syntax error : missing ';' before identifier 'window'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(86) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types.h(83) : error C2371: 'char16' : redefinition; different basic types
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_string_types.h(51) : see declaration of 'char16'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(65) : error C2146: syntax error : missing ';' before identifier 'm_sec'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(65) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(52) : error C2065: 'm_sec' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(52) : error C2065: 'CRITICAL_SECTION' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(52) : error C2070: 'unknown-type': illegal sizeof operand
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(53) : error C2065: 'm_sec' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(53) : error C3861: 'InitializeCriticalSection': identifier not found
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(56) : error C2065: 'm_sec' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(56) : error C3861: 'DeleteCriticalSection': identifier not found
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(59) : error C2065: 'm_sec' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(59) : error C3861: 'EnterCriticalSection': identifier not found
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(62) : error C2065: 'm_sec' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(62) : error C3861: 'LeaveCriticalSection': identifier not found
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(84) : error C2039: 'instance' : is not a member of '_cef_main_args_t'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(54) : see declaration of '_cef_main_args_t'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(54) : see declaration of '_cef_main_args_t'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(96) : error C2061: syntax error : identifier 'HINSTANCE'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(96) : error C2535: 'CefMainArgs::CefMainArgs(void)' : member function already defined or declared
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(93) : see declaration of 'CefMainArgs::CefMainArgs'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(97) : error C2065: 'instance' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(97) : error C2065: 'hInstance' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(120) : error C2039: 'parent_window' : is not a member of '_cef_window_info_t'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(61) : see declaration of '_cef_window_info_t'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(61) : see declaration of '_cef_window_info_t'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(121) : error C2039: 'menu' : is not a member of '_cef_window_info_t'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(61) : see declaration of '_cef_window_info_t'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(61) : see declaration of '_cef_window_info_t'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(122) : error C2039: 'window' : is not a member of '_cef_window_info_t'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(61) : see declaration of '_cef_window_info_t'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_types_win.h(61) : see declaration of '_cef_window_info_t'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(139) : error C2061: syntax error : identifier 'HWND'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(149) : error C2061: syntax error : identifier 'HWND'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(165) : error C2061: syntax error : identifier 'HWND'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(140) : error C2065: 'WS_CHILD' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(140) : error C2065: 'WS_CLIPCHILDREN' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(140) : error C2065: 'WS_CLIPSIBLINGS' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(140) : error C2065: 'WS_TABSTOP' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(141) : error C2065: 'WS_VISIBLE' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(142) : error C2065: 'parent_window' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(142) : error C2065: 'hWndParent' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(143) : error C2065: 'windowRect' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(143) : error C2228: left of '.left' must have class/struct/union
type is 'unknown-type'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(144) : error C2065: 'windowRect' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(144) : error C2228: left of '.top' must have class/struct/union
type is 'unknown-type'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(145) : error C2065: 'windowRect' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(145) : error C2228: left of '.right' must have class/struct/union
type is 'unknown-type'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(145) : error C2228: left of '.left' must have class/struct/union
type is 'unknown-type'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(146) : error C2065: 'windowRect' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(146) : error C2228: left of '.bottom' must have class/struct/union
type is 'unknown-type'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(146) : error C2228: left of '.top' must have class/struct/union
type is 'unknown-type'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(150) : error C2065: 'WS_OVERLAPPEDWINDOW' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(150) : error C2065: 'WS_CLIPCHILDREN' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(150) : error C2065: 'WS_CLIPSIBLINGS' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(151) : error C2065: 'WS_VISIBLE' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(152) : error C2065: 'parent_window' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(152) : error C2065: 'hWndParent' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(153) : error C2065: 'CW_USEDEFAULT' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(154) : error C2065: 'CW_USEDEFAULT' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(155) : error C2065: 'CW_USEDEFAULT' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(156) : error C2065: 'CW_USEDEFAULT' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(158) : error C2065: 'windowName' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(158) : error C2228: left of '.c_str' must have class/struct/union
type is 'unknown-type'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(158) : error C2228: left of '.length' must have class/struct/union
type is 'unknown-type'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(158) : error C2660: 'cef_string_utf16_set' : function does not take 3 arguments
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(167) : error C2065: 'parent_window' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(167) : error C2065: 'hWndParent' : undeclared identifier
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/cef_base.h(98) : error C3861: 'InterlockedIncrement': identifier not found
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/cef_base.h(105) : error C3861: 'InterlockedDecrement': identifier not found
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/cef_browser.h(287) : error C2146: syntax error : missing ';' before identifier 'GetWindowHandle'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/cef_browser.h(287) : error C2433: 'CefBrowserHost::HWND' : 'virtual' not permitted on data declarations
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/cef_browser.h(287) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/cef_browser.h(295) : error C2146: syntax error : missing ';' before identifier 'GetOpenerWindowHandle'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/cef_browser.h(295) : error C2433: 'CefBrowserHost::HWND' : 'virtual' not permitted on data declarations
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/cef_browser.h(295) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/cef_browser.h(468) : error C2061: syntax error : identifier 'MSG'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/cef_browser.h(474) : error C2061: syntax error : identifier 'MSG'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/cef_browser.h(287) : error C2253: 'CefBrowserHost::GetWindowHandle' : pure specifier or abstract override specifier only allowed on virtual function
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/cef_browser.h(295) : error C2253: 'CefBrowserHost::GetOpenerWindowHandle' : pure specifier or abstract override specifier only allowed on virtual function
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/cef_keyboard_handler.h(59) : error C2061: syntax error : identifier 'MSG'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/cef_keyboard_handler.h(71) : error C2061: syntax error : identifier 'MSG'
C:\Users\Jarrett\projects\cef_binary_3.1547.1412_windows64\include/cef_render_handler.h(129) : error C2061: syntax error : identifier 'HCURSOR'
src\gui\HtmlGuiComponent.cpp(179) : error C2082: redefinition of formal parameter 'clickCount'
scons: building terminated because of errors.
Some errors that jump out at me are:
\cef_binary_3.1547.1412_windows64\include/internal/cef_win.h(59) : error C3861: 'EnterCriticalSection': identifier not found
But this should be found, as cef_win.h clearly includes <windows.h> before it tries to call EnterCriticalSection.
There are various other errors that seem like they shouldn't be occuring.
I created a simple little sample file, which includes that same CEF3 header files that my project uses, and compiled using SCons, and it compiled just fine. The sample app is below:
/* Sample C/C++, Windows, link to kernel32.dll */
#include <cef_app.h>
#include <cef_client.h>
#include <cef_render_handler.h>
static CRITICAL_SECTION cs; /* This is the critical section object -- once initialized,
it cannot be moved in memory */
/* If you program in OOP, declare this as a non-static member in your class */
void f()
{
/* Enter the critical section -- other threads are locked out */
EnterCriticalSection(&cs);
/* Do some thread-safe processing! */
/* Leave the critical section -- other threads can now EnterCriticalSection() */
LeaveCriticalSection(&cs);
}
int main()
{
/* Initialize the critical section before entering multi-threaded context. */
InitializeCriticalSection(&cs);
f();
/* Release system object when all finished -- usually at the end of the cleanup code */
DeleteCriticalSection(&cs);
return 0;
}
Anyone have any ideas why I would be getting these errors?
as per comments: windows.h file wasn't included, because other script defined _WINDOWS_