Invalid Data Returned from ARIA or ARNL

From MobileRobots Research and Academic Customer Support

Jump to: navigation, search

One common reason that obviously invalid data is returned from function calls in ARIA, ARNL, ArNetworking, or other libraries, is that the libraries and program were built with incompatible compilers.

Make sure you are linking to the correct libraries for the compiler and version of that compiler you are using. You may need to rebuild ARIA and/or your program with the same compiler to resolve the problem.

If you are using incompatible libraries for your program, the program will run, and some calls into the libraries may work while others return invalid data or crash. For example, you may call a method of ArRobot in ARIA such as getX() or getY() and receive as the return value 0 (even if that is incorrect) or a completely invalid value (extremely large, for example).

In Linux (Debian and Redhat) packages, libraries are built with GCC 3.4. GCC 4.0 and later is not strictly ABI (link) compatible, and so you must either use GCC 3.4 to build a program that uses ARIA or ARNL, or rebuild ARIA with GCC 4.x+. A separate ARNL Debian package is also provided that was built with GCC 4 on a later version of Debian.

In Windows packages, libraries built with Visual C++ 7.1 (Visual Studio 2003) and with Visual C++ 9.0 (Visual Studio 2008) are provided. The VC9 libraries contain the string "VC9" in their filenames, e.g. AriaVC9.lib, AriaVC9.dll, etc. Make sure that all configurations of all projects are linking to the right libraries.

Personal tools