When trying to compile and run the antlr4-cpp-demo with Xcode on macOS Sierra I get the following error:
TLexer lexer(&input); (!) Variable type 'antlrcpptest::TLexer' is an abstract class
As this is a demo I suppose it should work out of the box...
Any idea what is going wrong?
Check what exactly is causing the compiler to believe that TLexer is abstract. Probably it doesn't override a function that is abstract in one of its predecessors, which in turn indicates your are using a code generation jar and a C++ runtime that don't match. Did you download both from the ANTLR website?
Related
When I compile a project using cross compiler,I come across the following error:
internal compiler error: in decode_addr_const, at varasm.c:2632
Where can I find the varasm.c file?I searched the project directory and cross compiler directory,but I didn't find it.
Thanks for helpping,Light
The compiler maker has that file, and probably won't give it to you.
But as it seems to be an error in the compiler, you can either contact them / file a bug report, or try to avoid the error by changing your code a bit (which is a guessing game, as you don't know how you made it run into the error). Or use another compiler, if there are choices.
I'm trying to get an app working with a PLC. I'm using this library: https://github.com/FreeOpcUa/freeopcua
example code: https://github.com/FreeOpcUa/freeopcua/blob/master/src/examples/example_client.cpp
But when I include the header files(like in the example) from the library it gives an error:
Non-Virtual function 'DateTime::DateTime(const DateTime &)' declared pure.
When I search the specific line of this error it shows me this:
DateTime(const DateTime&) = default;
I already asked it on the github page, and they are saying it has something to do with my compiler. I never touched it, so it shouldn't be having odd options.
So how can I solve this? And if there is something wrong with my compiler, How can I change my compiler options to get it fixed?
Yes, bcc32 don't allow to create instance of abstract class. So you can change target platform to win64 and compile without errors.
Another way, as Thorsten Schöning said, you can use C++ Builder 10 with bcc32c based CLANG compiler and do it also without errors.
I am trying to compile an R package that contains both C++ and Fortran code using Rcpp. The compilation works perfectly fine, but the package can't dyn.load the shared object, throwing the error:
undefined symbol: _ZTVN10__cxxabiv120__si_class_type_infoE
Applying a c++filt to this gives:
vtable for __cxxabiv1::__si_class_type_info
The package is the sf_onefolder branch from here: https://github.com/blowfish711/PEcAnRTM.
I thought this might be because of some compatibility (or lack thereof) with the latest R version, but an older R version on a different system gives the same error.
I don't necessarily even need an answer to this as much as a way to debug it. I've used gdb with R scripts in the past, but I'm at a loss about how to approach this. Any suggestions are welcome!
What you post is not a minimally reproducible example but the first thing that comes to mind is different headers / signatures and eg the need to use
extern "C" before C++ functions called from C.
You may need to something similar. It is hard to say more but there are of course package uses C++ and Fortran together.
I've had similar issues when trying to call Fortran code using the Rcpp interface. I solved them by building an R package (see here 1 for the source). Hope this helps.
I was wondering if someone could help me with this.
I've retrieved the source code for the gnuplot-iostream interface from http://www.stahlke.org/dan/gnuplot-iostream/. However, when I attempt to compile the code using the command:
]$ cmake .; make
I get the following compiler error
/.../gnuplot-iostream.h: In constructor ‘Gnuplot::Gnuplot(const std::string&)’:
/.../gnuplot-iostream.h:427: error: ‘never_close_handle’ is not a member of ‘boost::iostreams’
I'm using Scientific Linux 6.2 (kernal 2.6.32-220.23.1.el6.x86_64), g++ 4.4.6, and have boost libraries installed (/usr/include/boost/iostreams/ exists).
Any assistance would be very much appreciated.
D
enum file_descriptor_flags was added in boost::iostreams only in 1.44.0.
enum file_descriptor_flags
{
never_close_handle = 0,
close_handle = 3
};
So, the solution is simply update the boost library (thanks ForEveR).
If however, like me, you do not have the access to update the libraries on your system you should note that I was able to force compilation and obtain basic functionality by simply replacing the two occurrences of boost::iostreams::never_close_handle in the gnuplot-iostream.h file with 0.
I'm currently writing a very simple game engine for an assignment and to make the code a lot nicer I've decided to use a vector math library. One of my lecturers showed me the Sony Vector Math library which is used in the Bullet Physics engine and it's great as far as I can see. I've got it working on Linux nicely but I'm having problems porting it to work on OS X (intel, Snow Leopard). I have included the files correctly in my project but the C++ version of the library doesn't seem to compile. I can get the C version of the library working but it has a fairly nasty API compared to the C++ version and the whole reason of using this library was to neaten the code in the first place.
http://glosx.blogspot.com/2008/07/sony-vector-math-library.html
This blog post that I've stumbled upon seems to suggest something's up with the compiler? It's fairly short so I couldn't take a lot of information from it.
When I try to use the C++ version I get the following errors (expanded view of each error):
/usr/include/vectormath/cpp/../SSE/cpp/vectormath_aos.h:156:0
/usr/include/vectormath/cpp/../SSE/cpp/vectormath_aos.h:156:
error: '__forceinline' does not name a type
second error:
/Developer/apps/gl test/main.cpp:7:0 In file included from /Developer/apps/gl test/main.cpp
/usr/include/vectormath/cpp/vectormath_aos.h:38:0 In file included from
/usr/include/vectormath/cpp/vectormath_aos.h
/usr/include/vectormath/cpp/../SSE/cpp/vectormath_aos.h:330:0 In file included from
/usr/include/vectormath/cpp/../SSE/cpp/vectormath_aos.h
/usr/include/vectormath/cpp/../SSE/cpp/vecidx_aos.h:45:0 Expected constructor, destructor,
or type conversion before '(' token in /usr/include/vectormath/cpp/../SSE/cpp/vecidx_aos.h
Finally two errors at the end of the main.cpp file:
Expected '}' at the end of input
Expected '}' at the end of input
I've Googled my heart out but I can't seem to find any answers or anything to point me in the right direction so any help will be greatly received.
Thanks,
__forceinline is a reserved word that is supported by only a couple compilers. Clearly, your compiler does not support the __forceinline keyword and the code in question is non-portable.
A very poor workaround would be to pass a new define to your compiler that gives the keyword the correct meaning. E.g.: -D__forceinline=inline or -D__forceinline=__attribute__((always_inline)) (Thanks Paul!)
The SSE version was assumed to be only for Microsoft Visual Studio. For other platforms (Mac etc) you can use the scalar version.
Bullet\Extras\vectormathlibrary\include\vectormath\scalar\cpp
It looks like someone's fixed this up and posted a patched version in response to this very issue.
Now GCC compliant.
Which compiler are you using on OS X ? There are 4 to choose from in the standard Xcode 3.2 install and the default is gcc 4.2. You might be better off trying gcc 4.0.