
Errores portando aplicaciones C++ Windows a Solaris (I)
28/12/2012Al 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”;
Deja una respuesta