h1

Errores portando aplicaciones C++ Windows a Solaris (I)

28/12/2012

Al portar una aplicación C++ para Windows desarrollada enVisual Studio hacia Solaris o entornos Unix, se recomienda utilizar las siguientes conversiones y consejos:

PROGRAMACIÓN

"src/ImpliedVolsCalculation/cHestonPricerUtils.cpp", line 362: Error: Overloading ambiguity between "DateTime::operator+(const DateTime::cDate&, const DateTime::cPeriod&)" and "built-in operator+(long, const wchar_t*)"
Separar la suma en dos líneas.

Error: Could not find a match for Utils::Strings::CaseInsensitiveCompare(char*const, const wchar_t[4]) needed in static ContractPricing::MarketData::cXLCapletBlackVolatilityMatrixBuilder::ReadCapletStrikes(void**const).:if (Utils::Strings::CaseInsensitiveCompare(var[0][k].ToBSTR(), L"ATM"))
Cambiar L”ATM” (formatoUnicode) por ”ATM”

c++ is multiply defined
Probablemente una variable está duplicada en dos ficheros, empezar buscando que el mismo fichero al que referencia el compilador no esté duplicado…

namespaces cannot be declared in a class scope
Mover los inlines que haya declarados fuera de la clase a dentro de la clase, eliminando los namespaces de esos métodos. Y comprobar que la llave que cierra el namespace NO lleve un “;”

cannot have a using directive in a class
Comentar el using.

String is not defined
Añadir “using namespace std;”

c++ +"is not a static data member"
Comprobar los parámetros (los tipos concretamente, que existan) del constructor.

"src/cHestonAnalyticalSolver.cpp", line 86: Error: Too many arguments in call to "std::complex<double>::real() const".
El método .real() no admite parámetros en Solaris, es necesario salvar los resultados de los cálculos en una nueva variable de nombre distinto y devolver esa.

cannot create a variable for abstract class cAutocallSwapEngine
Ver la clase de la que hereda, pues hay algún parámetro que probablemente falte en sus constructores y virtuales.

"../../Include/Heston/HestonPricingInputData.h", line 269: Error: ")" expected instead of "<".
Añadir el espacio de nombres “using namespace std;”

"template vector is not defined"
añadir “using namespace std”;

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: