Troubles building QuantLibXL.xll for 64 bits platform

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

Troubles building QuantLibXL.xll for 64 bits platform

Vincent Touratier
Hi,

I am currently trying to prepare "my migration" to Windows 64 + Excel 10 - 64 bits, and consequently, I am trying to build QuantlibXL.xll for a 64 bits platform.
After downloading the latest available package, I have been able to build the xll under VS 2010 Express for a 32 bits platform. Thanks to the users list, I have also been able to build for a 32 bits platform in VS 2012 Express, which I will be using from now on.
Unfortunately I am not successful in building for a 64 bits platform.
The entire solution compiles fine after I made a few modifications to the source, related to conversions (cf. CppToLibrary)... again, thanks to the users list...
Hence QuantLibAddinStatic-vc110-mt-s-1_2_0.lib and QuantLibAddinStatic-vc110-mt-s-1_2_0.exp are produced.
BUT I then get plenty of linking errors like, as an example, "xlsdk-vc110-mt-s.lib (framework.obj) : error LNK 2001: unresolved external symbol Excel4"' or "QuantLibAddinStatic-vc110-mt-s-1_2_0.exp : error LNK2001: unresolved external symbol _ohVersion.
I guess I must be missing something in my compiler settings but I can't find out what and I don't get why it works when targeting a 32 bits platform but not when targeting a 64 bits platform...

I am getting desperate ;-) and I read through the various exchanges in the users list that some were successful in compiling for a 64 bits platform... So if anyone can help...

Thanks in advance

Vincent
------------------------------------------------------------------------------
WatchGuard Dimension instantly turns raw network data into actionable
security intelligence. It gives you real-time visual feedback on key
security issues and trends.  Skip the complicated setup - simply import
a virtual appliance and go from zero to informed in seconds.
http://pubads.g.doubleclick.net/gampad/clk?id=123612991&iu=/4140/ostg.clktrk
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: Troubles building QuantLibXL.xll for 64 bits platform

Vincent Touratier
Hi all,

I am making a second attempt at getting some help on this...

I am still failing to complete a full build of the QuantLibXL.xll when targeting a 64 bits platform...

Since I wrote the below message, I have managed to get rid of some of my "unresolved external..." linking errors.

I have replaced some explicit direct includes in the xlsdk project by their specifically 64 bits equivalents (namely xlcall.h and xlcall32.lib) and this fixed the "xlsdk-vc110-mt-s.lib (framework.obj) : error LNK 2001: unresolved external symbol Excel4" errors.

Hence, I have now narrowed down the list of unresolved externals errors to 51 errors. They are all related to linking between the QuantLibXLStatic project and the ohxllib project.
To be specific I get:
QuantLibAddinStatic-vc110-mt-s-1_2_0.exp : error LNK2001: unresolved external symbol _ohBoostVersion
QuantLibAddinStatic-vc110-mt-s-1_2_0.exp : error LNK2001: unresolved external symbol _ohEnumeratedClass
QuantLibAddinStatic-vc110-mt-s-1_2_0.exp : error LNK2001: unresolved external symbol _ohEnumeratedPair
...etc...
for the 51 functions exported by ObjectHandler-xllib-vc110-mt-s-1_2_0.lib.

I really can't find out what I am still missing in my settings.

Once again, I can smoothly fully build the entire solution that I have downloaded when I target a 32 bits platform without altering anything neither in the source nor in the VC 2012 Express settings...

I am desperate for help...

Thanks


Le 30 janv. 2014 à 12:23, Vincent Touratier <[hidden email]> a écrit :

Hi,

I am currently trying to prepare "my migration" to Windows 64 + Excel 10 - 64 bits, and consequently, I am trying to build QuantlibXL.xll for a 64 bits platform.
After downloading the latest available package, I have been able to build the xll under VS 2010 Express for a 32 bits platform. Thanks to the users list, I have also been able to build for a 32 bits platform in VS 2012 Express, which I will be using from now on.
Unfortunately I am not successful in building for a 64 bits platform.
The entire solution compiles fine after I made a few modifications to the source, related to conversions (cf. CppToLibrary)... again, thanks to the users list...
Hence QuantLibAddinStatic-vc110-mt-s-1_2_0.lib and QuantLibAddinStatic-vc110-mt-s-1_2_0.exp are produced.
BUT I then get plenty of linking errors like, as an example, "xlsdk-vc110-mt-s.lib (framework.obj) : error LNK 2001: unresolved external symbol Excel4"' or "QuantLibAddinStatic-vc110-mt-s-1_2_0.exp : error LNK2001: unresolved external symbol _ohVersion.
I guess I must be missing something in my compiler settings but I can't find out what and I don't get why it works when targeting a 32 bits platform but not when targeting a 64 bits platform...

I am getting desperate ;-) and I read through the various exchanges in the users list that some were successful in compiling for a 64 bits platform... So if anyone can help...

Thanks in advance

Vincent


------------------------------------------------------------------------------
Android apps run on BlackBerry 10
Introducing the new BlackBerry 10.2.1 Runtime for Android apps.
Now with support for Jelly Bean, Bluetooth, Mapview and more.
Get your Android app in front of a whole new audience.  Start now.
http://pubads.g.doubleclick.net/gampad/clk?id=124407151&iu=/4140/ostg.clktrk
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: Troubles building QuantLibXL.xll for 64 bits platform

Eric Ehlers-2
Hi Vincent,

> I am making a second attempt at getting some help on this...
>
> I am still failing to complete a full build of the QuantLibXL.xll when
> targeting a 64 bits platform...

I made an initial attempt to compile QuantLibXL for 64-bit, this was
unsuccessful, partly because one of the project constraints was to use
VC 2008.  In the end I was forced to admit defeat and to downgrade to
32-bit Excel.  When I have time I will reattempt the 64-bit build with
VC 2012, but in the meantime the best hope is for someone who has
already succeeded with the 64-bit build to provide some documentation...
  Bon courage.

Kind Regards,
Eric
--
===================================================
Eric Ehlers
nazcatech sprl | Brussels | http://www.nazcatech.be
* Distributed computing for pricing analytics
* Use Microsoft Excel as a client to the Grid

------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: Troubles building QuantLibXL.xll for 64 bits platform

Richard Gould
In reply to this post by Vincent Touratier
Hi Vincent

This was a while back and I'm not sure if you're still interested, but I managed to get past this step by modifying ohxl/functions/export.hpp to removing the leading '_' from all of the export statements. Didn't play nicely with the 64 bit name mangling conventions. I've got the xll built now, though it's crashing immediately on loading in Excel 2013.

Richard
Reply | Threaded
Open this post in threaded view
|

Re: Troubles building QuantLibXL.xll for 64 bits platform

Vincent Touratier
Hi Richard,

I am still interested and I thank you very much for your answer.

I have just tried what you suggested and indeed the xll is now building.
Unfortunately, just as you describe it, it is crashing immediately on loading in Excel... (Unlike you, I use Excel 2010 64 bits).

Still... thanks again as I have now moved one step forward...

Vincent

Le 12 mars 2014 à 12:44, Richard Gould <[hidden email]> a écrit :

Hi Vincent

This was a while back and I'm not sure if you're still interested, but I
managed to get past this step by modifying ohxl/functions/export.hpp to
removing the leading '_' from all of the export statements. Didn't play
nicely with the 64 bit name mangling conventions. I've got the xll built
now, though it's crashing immediately on loading in Excel 2013.

Richard



--
View this message in context: http://quantlib.10058.n7.nabble.com/Troubles-building-QuantLibXL-xll-for-64-bits-platform-tp14927p15062.html
Sent from the quantlib-users mailing list archive at Nabble.com.



------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: Troubles building QuantLibXL.xll for 64 bits platform

Richard Gould
Hi Vincent

I solved the crash and now have it working. In objecthandler/xlsdk/framewrk.cpp you need to change line 98 from:

int xlret = Excel4v(xlfn, pxResult, count, (LPXLOPER FAR *)(&count+1));

to:

    int ver = XLCallVer();

    va_list ppxArgs;

    LPXLOPER px;
    int i;

    va_start(ppxArgs, count);

    for (i = 0; i<count; i++)
    {
        px = va_arg(ppxArgs, LPXLOPER);

        if (px == NULL)
        {
            FreeAllTempMemory();
            return;
        }
    }

    va_end(ppxArgs);


    va_start(ppxArgs, count);
    int xlret = Excel4v(xlfn, pxResult, count, (LPXLOPER *)ppxArgs);
    va_end(ppxArgs);

There's probably a neater way. I just lifted this from the latest Excel SDK examples.

Cheers
Richard

---- On Tue, 18 Mar 2014 07:03:55 -0700 Vincent Touratier <[hidden email]> wrote ----

Hi Richard,

I am still interested and I thank you very much for your answer.

I have just tried what you suggested and indeed the xll is now building.
Unfortunately, just as you describe it, it is crashing immediately on loading in Excel... (Unlike you, I use Excel 2010 64 bits).

Still... thanks again as I have now moved one step forward...

Vincent

Le 12 mars 2014 à 12:44, Richard Gould <[hidden email]> a écrit :

Hi Vincent

This was a while back and I'm not sure if you're still interested, but I
managed to get past this step by modifying ohxl/functions/export.hpp to
removing the leading '_' from all of the export statements. Didn't play
nicely with the 64 bit name mangling conventions. I've got the xll built
now, though it's crashing immediately on loading in Excel 2013.

Richard



--
View this message in context: http://quantlib.10058.n7.nabble.com/Troubles-building-QuantLibXL-xll-for-64-bits-platform-tp14927p15062.html
Sent from the quantlib-users mailing list archive at Nabble.com.




------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: Troubles building QuantLibXL.xll for 64 bits platform

Vincent Touratier
Hi Richard,

Thank you very very very very much for that. I had been stuck for a couple of months !

I am not sharp enough in C++ to understand your solution but it is working just fine for me now.

I can now test all my Excel spreadsheets. Have you experienced any stability or performance issues on your side ?

Again I am truly grateful...

Kind regards

Vincent

Le 18 mars 2014 à 21:53, richard <[hidden email]> a écrit :

Hi Vincent

I solved the crash and now have it working. In objecthandler/xlsdk/framewrk.cpp you need to change line 98 from:

int xlret = Excel4v(xlfn, pxResult, count, (LPXLOPER FAR *)(&count+1));

to:

    int ver = XLCallVer();

    va_list ppxArgs;

    LPXLOPER px;
    int i;

    va_start(ppxArgs, count);

    for (i = 0; i<count; i++)
    {
        px = va_arg(ppxArgs, LPXLOPER);

        if (px == NULL)
        {
            FreeAllTempMemory();
            return;
        }
    }

    va_end(ppxArgs);


    va_start(ppxArgs, count);
    int xlret = Excel4v(xlfn, pxResult, count, (LPXLOPER *)ppxArgs);
    va_end(ppxArgs);

There's probably a neater way. I just lifted this from the latest Excel SDK examples.

Cheers
Richard

---- On Tue, 18 Mar 2014 07:03:55 -0700 Vincent Touratier <[hidden email]> wrote ----

Hi Richard,

I am still interested and I thank you very much for your answer.

I have just tried what you suggested and indeed the xll is now building.
Unfortunately, just as you describe it, it is crashing immediately on loading in Excel... (Unlike you, I use Excel 2010 64 bits).

Still... thanks again as I have now moved one step forward...

Vincent

Le 12 mars 2014 à 12:44, Richard Gould <[hidden email]> a écrit :

Hi Vincent

This was a while back and I'm not sure if you're still interested, but I
managed to get past this step by modifying ohxl/functions/export.hpp to
removing the leading '_' from all of the export statements. Didn't play
nicely with the 64 bit name mangling conventions. I've got the xll built
now, though it's crashing immediately on loading in Excel 2013.

Richard



--
View this message in context: http://quantlib.10058.n7.nabble.com/Troubles-building-QuantLibXL-xll-for-64-bits-platform-tp14927p15062.html
Sent from the quantlib-users mailing list archive at Nabble.com.




------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users
Reply | Threaded
Open this post in threaded view
|

Re: Troubles building QuantLibXL.xll for 64 bits platform

Eric Ehlers-2
In reply to this post by Richard Gould
Hi Richard,

> I solved the crash and now have it working.

Thanks for sharing that.  I am in the process of packaging up the 1.4
release, could I include this change in that?  Is it one piece of source
code that would work in both 32- and 64-bit?

Thanks,
Eric
--
===================================================
Eric Ehlers
nazcatech sprl | Brussels | http://www.nazcatech.be
* Distributed computing for pricing analytics
* Use Microsoft Excel as a client to the Grid

------------------------------------------------------------------------------
Learn Graph Databases - Download FREE O'Reilly Book
"Graph Databases" is the definitive new guide to graph databases and their
applications. Written by three acclaimed leaders in the field,
this first edition is now available. Download your free book today!
http://p.sf.net/sfu/13534_NeoTech
_______________________________________________
QuantLib-users mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/quantlib-users