Pregunta

He descargado y construido QuantLib (búsqueda en Google de QuantLib y comprobar vínculo de instalación) desde su página web en Visual Studio 2010. Pero debido a mis conocimientos de C ++ es una especie de mínimo me gustaría usar el TRAGO para que pueda llamar a las bibliotecas QuantLib con C #. Después de la conversión TRAGO consigo una acumulación adecuada. Pensé que esto sería correr, pero en tiempo de ejecución me sale el siguiente error en múltiples ubicaciones en las clases de C #:

PInvokeStackImbalance se detectó
Una llamada a la función PInvoke 'NQuantLib! QuantLib.NQuantLibcPINVOKE :: new_Date__SWIG_1' ha desequilibrado la pila. Esto es probablemente debido a que la firma PInvoke gestionado no coincide con la firma de destino no administrado. Compruebe que la convención y los parámetros de la firma PInvoke llamadas coinciden con la firma no administrado objetivo.

error MDA MSDN

Creo que esto es un error general así que por favor, hágamelo saber cómo solucionar este problema?

¿Fue útil?

Solución

Podría ser algún tipo de conflicto de versiones.

Primero: puesto que usted está usando VC2010, asumo la versión de QuantLib y QuantLib-TRAGO que está utilizando se comprueban hacia fuera de la subversión; ¿es esto correcto?

En segundo lugar, ¿usó los proyectos VC2010 incluidos en la caja (los que tienen _vc10 en el nombre del archivo), tanto para QuantLib y QuantLib-C #, o dio a convertir otros proyectos? ¿Se compila tanto en modo de lanzamiento? Y no los de C # ejemplos proporcionados van desde el IDE si usted les dice a? (Son los proyectos EquityOption y BermudanSwaption)

Por último, la versión de TRAGO está usando?

Otros consejos

http://www.resolversystems.com/products/quantlib-binary/ para una versión lista construida de QuantLib para C #.

Yo estaba en marcha y funcionando en pocos minutos.

las extensiones QuantLib página para obtener más información sobre el uso de QuantLib bajo otros lenguajes y plataformas.

una solución temporal sería la creación de un archivo de configuración ( App.config ) en el solución QuantLib_vc10 y añadir un NetFx40_PInvokeStackResilience elemento para suprimir el error pila desequilibrada.

I creó el siguiente archivo App.config y había esta cargado en el BermudanSwaption_vc10 y EquityOption_vc10 proyectos.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <runtime>
        <NetFx40_PInvokeStackResilience enabled="1"/>
    </runtime>
</configuration>

A continuación, los dos proyectos no tendrán ningún problema, aunque probablemente con algún costo en el rendimiento.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top