|
From: <tar...@li...> - 2012-10-03 16:55:02
|
Hello,
I have update QuantLib from 1.1 to 1.2 and I got a strange error.
QLSBTesting.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll', Cannot find or open
the PDB file
'QLSBTesting.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll', Cannot find or
open the PDB file
'QLSBTesting.exe': Loaded 'C:\WINDOWS\system32\msvcp100.dll', Cannot find or
open the PDB file
'QLSBTesting.exe': Loaded 'C:\WINDOWS\system32\msvcr100.dll', Cannot find or
open the PDB file
First-chance exception at 0x7c812afb in QLSBTesting.exe: Microsoft C++
exception: QuantLib::Error at memory location 0x0012fc68..
The program '[4108] QLSBTesting.exe: Native' has exited with code 0 (0x0).
Here is the piece of code which worked on 1.1 but return me the above error
after moved to 1.2. The pronlem is when I call the InterpolatedDiscountCurve (
see at the end of the code)
Have you any clue?
Thanks in advance
Paolo
std::vector<std::string> sb_dates;
sb_dates.push_back("2012-10-03");
sb_dates.push_back("2012-11-05");
sb_dates.push_back("2012-11-05");
sb_dates.push_back("2012-12-05");
sb_dates.push_back("2013-10-07");
sb_dates.push_back("2014-10-06");
sb_dates.push_back("2017-10-05");
sb_dates.push_back("2024-10-07");
sb_dates.push_back("2032-10-05");
std::vector<double> sb_values;
sb_values.push_back(1.0);
sb_values.push_back(0.999981);
sb_values.push_back( 0.99997);
sb_values.push_back( 0.999878);
sb_values.push_back( 0.996254);
sb_values.push_back( 0.991456);
sb_values.push_back(0.95465);
sb_values.push_back( 0.785955);
sb_values.push_back(0.623019);
std::string sb_datatype("discountfactor");
std::string sb_dcf("act360");
std::string sb_interpolation("Linear");
std::vector<std::string> sb_dates2interp;
std::vector<QuantLib::Date> dates;
if (dates.size() < sb_dates.size()) { dates.resize(sb_dates.size()); }
std::vector<QuantLib::Date> dates2interp;
if (dates2interp.size() < sb_dates2interp.size()) { dates2interp.resize
(sb_dates2interp.size()); }
// Converting the dates string into QuantLib Date
for (size_t i=0; i<sb_dates.size(); ++i) {
dates[i] = QuantLib::DateParser::parseISO(sb_dates[i]);
}
for (size_t i=0; i<sb_dates2interp.size(); ++i) {
dates2interp[i] = QuantLib::DateParser::parseISO(sb_dates2interp[i]);
}
// Day counter
QuantLib::DayCounter basis = QuantLib::Actual360();
if (sb_dcf.compare("actact") == 0) { basis = QuantLib::ActualActual(); }
if (sb_dcf.compare("act365") == 0) { basis = QuantLib::Actual365Fixed(); }
if (sb_dcf.compare("30360") == 0) { basis = QuantLib::Thirty360(); }
if (sb_dcf.compare("act360") == 0) { basis = QuantLib::Actual360(); }
if (sb_dcf.compare("bus252") == 0) { basis = QuantLib::Business252(); }
// Yield term structure
QuantLib::RelinkableHandle<YieldTermStructure> yc;
if (sb_datatype.compare("discountfactor") == 0) {
std::vector<QuantLib::DiscountFactor> dfs;
if (dfs.size() < sb_values.size()) { dfs.resize(sb_values.size()); }
for (size_t i=0; i<sb_values.size(); ++i) {
dfs[i] = sb_values[i];
std::cout << dfs[i] << std::endl;
}
if (sb_interpolation.compare("Linear") == 0) {
std::cout << "START: " << std::endl;
boost::shared_ptr<YieldTermStructure> dfcurve(new QuantLib::
InterpolatedDiscountCurve<Linear>(dates, dfs, basis));
yc.linkTo(dfcurve);
std::cout << "VALUE DF: " << dfcurve->(dates2interp[1]) << std::endl;
}
}
|
|
From: Michael B. <mjb...@gm...> - 2012-10-04 00:31:18
|
Hi,
you are running a debug version of this quant lib module but do not have
the debug symbols present on your machine.
You'll need to get hold of a release version of the 1.2 (no debug symbols)
or build 1.2 yourself on the machine that you are running your code on.
Cheers,
Mike
On Thu, Oct 4, 2012 at 12:54 AM, tar...@li...
<tar...@li...>wrote:
>
> Hello,
>
> I have update QuantLib from 1.1 to 1.2 and I got a strange error.
>
> QLSBTesting.exe': Loaded 'C:\WINDOWS\system32\ntdll.dll', Cannot find or
> open
> the PDB file
> 'QLSBTesting.exe': Loaded 'C:\WINDOWS\system32\kernel32.dll', Cannot find
> or
> open the PDB file
> 'QLSBTesting.exe': Loaded 'C:\WINDOWS\system32\msvcp100.dll', Cannot find
> or
> open the PDB file
> 'QLSBTesting.exe': Loaded 'C:\WINDOWS\system32\msvcr100.dll', Cannot find
> or
> open the PDB file
> First-chance exception at 0x7c812afb in QLSBTesting.exe: Microsoft C++
> exception: QuantLib::Error at memory location 0x0012fc68..
> The program '[4108] QLSBTesting.exe: Native' has exited with code 0 (0x0).
>
> Here is the piece of code which worked on 1.1 but return me the above error
> after moved to 1.2. The pronlem is when I call the
> InterpolatedDiscountCurve (
> see at the end of the code)
> Have you any clue?
>
> Thanks in advance
> Paolo
>
> std::vector<std::string>
> sb_dates;
> sb_dates.push_back("2012-10-03");
> sb_dates.push_back("2012-11-05");
> sb_dates.push_back("2012-11-05");
> sb_dates.push_back("2012-12-05");
> sb_dates.push_back("2013-10-07");
> sb_dates.push_back("2014-10-06");
> sb_dates.push_back("2017-10-05");
> sb_dates.push_back("2024-10-07");
> sb_dates.push_back("2032-10-05");
>
> std::vector<double> sb_values;
> sb_values.push_back(1.0);
> sb_values.push_back(0.999981);
> sb_values.push_back( 0.99997);
> sb_values.push_back( 0.999878);
> sb_values.push_back( 0.996254);
> sb_values.push_back( 0.991456);
> sb_values.push_back(0.95465);
> sb_values.push_back( 0.785955);
> sb_values.push_back(0.623019);
>
> std::string sb_datatype("discountfactor");
> std::string sb_dcf("act360");
> std::string sb_interpolation("Linear");
> std::vector<std::string> sb_dates2interp;
>
> std::vector<QuantLib::Date> dates;
> if (dates.size() < sb_dates.size()) {
> dates.resize(sb_dates.size()); }
> std::vector<QuantLib::Date> dates2interp;
> if (dates2interp.size() < sb_dates2interp.size()) {
> dates2interp.resize
> (sb_dates2interp.size()); }
>
> // Converting the dates string into QuantLib Date
> for (size_t i=0; i<sb_dates.size(); ++i) {
> dates[i] =
> QuantLib::DateParser::parseISO(sb_dates[i]);
> }
> for (size_t i=0; i<sb_dates2interp.size(); ++i) {
> dates2interp[i] =
> QuantLib::DateParser::parseISO(sb_dates2interp[i]);
> }
>
> // Day counter
> QuantLib::DayCounter basis = QuantLib::Actual360();
> if (sb_dcf.compare("actact") == 0) { basis =
> QuantLib::ActualActual(); }
> if (sb_dcf.compare("act365") == 0) { basis =
> QuantLib::Actual365Fixed(); }
> if (sb_dcf.compare("30360") == 0) { basis =
> QuantLib::Thirty360(); }
> if (sb_dcf.compare("act360") == 0) { basis =
> QuantLib::Actual360(); }
> if (sb_dcf.compare("bus252") == 0) { basis =
> QuantLib::Business252(); }
>
> // Yield term structure
> QuantLib::RelinkableHandle<YieldTermStructure> yc;
>
> if (sb_datatype.compare("discountfactor") == 0) {
>
> std::vector<QuantLib::DiscountFactor> dfs;
> if (dfs.size() < sb_values.size()) {
> dfs.resize(sb_values.size()); }
> for (size_t i=0; i<sb_values.size(); ++i) {
> dfs[i] = sb_values[i];
> std::cout << dfs[i] << std::endl;
> }
>
> if (sb_interpolation.compare("Linear") == 0) {
> std::cout << "START: " << std::endl;
> boost::shared_ptr<YieldTermStructure>
> dfcurve(new QuantLib::
> InterpolatedDiscountCurve<Linear>(dates, dfs, basis));
> yc.linkTo(dfcurve);
> std::cout << "VALUE DF: " <<
> dfcurve->(dates2interp[1]) << std::endl;
> }
> }
>
>
> ------------------------------------------------------------------------------
> Don't let slow site performance ruin your business. Deploy New Relic APM
> Deploy New Relic app performance management and know exactly
> what is happening inside your Ruby, Python, PHP, Java, and .NET app
> Try New Relic at no cost today and get our sweet Data Nerd shirt too!
> http://p.sf.net/sfu/newrelic-dev2dev
> _______________________________________________
> QuantLib-dev mailing list
> Qua...@li...
> https://lists.sourceforge.net/lists/listinfo/quantlib-dev
>
|