![MQL5 - Lenguaje de estrategias comerciales para el terminal de cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Y ahí está la pregunta número uno.
¿Cómo se importan funciones de dlls de 32 bits como user32.dll etc. a una aplicación de 64? ¿O hay copias para ellos en el sistema con ese nombre y se crea un espacio OOP?
Bueno, para empezar, los sistemas x64 tienen un lanzamiento emulado de los programas x86. La cuestión es cómo ejecutar programas x64 en x86.
¿Quizás la pregunta no sea sobre el terminal sino sobre alguna compilación complicada de estas mismas DLLs?
Las DLL se alimentan de la API de Windows, por ejemplo, user32, kernel32, winmm, wininet en el terminal de 32/64 bits.
La solución del problema parece estar en otra parte.
La cuestión es cómo ejecutar programas x64 en x86.
¿Puede ser que la pregunta no sea sobre el terminal, sino sobre alguna compilación complicada de estas mismas DLLs?
Por ejemplo, user32, kernel32, winmm, wininet funcionan en un terminal de 32/64 bits.
La solución a este problema parece estar en otra parte.
Así que, teóricamente, puedes hacer que las DLL de 32 bits funcionen allí y allí.
Quizás sea el momento de llamar a los desarrolladores.
Tal vez haya formas más astutas de compilación // Dejé de trabajar con una DLL de 32 bits compilada de forma "ingenua" en x64. De todos modos, hay precedentes que "existen" (c).
Por ejemplo, user32, kernel32, winmm, wininet en el terminal de 32/64 bits.
Así que hazlo en esa analogía... ¡no es gran cosa!... :-))
Voy a echar un vistazo. ;)
La versión más sencilla para su caso.
Bueno, para el caso más sencillo, crédito. "Te apunto" :)
De memoria, pero no escasa, en comparación.
resultado:
La diferencia es de 6 veces. Teniendo en cuenta que tengo un buffer de flotación - 3 veces. // También tienes un robo de memoria implícito - tu tabla de descriptores de clase del sistema (en este ejemplo) es 1000*1000+1000, mientras que la mía es 1 (!).
La velocidad es casi la misma.
¿Se va a encoger? ;)
--
Mentí, sus subclases son todas estáticas, así que el robo implícito es un poco exagerado. Tacha eso. :)
Quizás sea el momento de llamar a los desarrolladores.
Las funciones de la biblioteca del sistema para los procesos x86 (32 bits) tienen una envoltura especial a través de la cual se pasan a x64, se ejecutan y se devuelven a x86.
Brevemente.
Las funciones de la biblioteca del sistema para los procesos x86 (32 bits) tienen una envoltura especial, a través de la cual se transfieren a x64, se ejecutan y se devuelven a x86.
Gracias por la información.
¿Puede decirme cómo hacer lo mismo por su cuenta? Sólo un enlace (si está disponible).
¿Se va a encoger? ;)
No, utilizo matrices unidimensionales siempre que es posible.
DE ACUERDO. Las cuestiones de optimización son secundarias en este caso. La hazaña se defiende de todos modos.
--
Puedo ofrecerle el siguiente problema.
La matriz tiene una dimensionalidad arbitraria (vamos a limitarla a ^16 para mayor claridad).
La dimensionalidad se establece en el momento de la creación por el número de parámetros, como en el caso de las matrices habituales.
XXArray xx2(5,7), xx5(12,12,16,16,8);
Debería funcionar para todos los indexadores de dimensiones ( A[i][j][k][n][m]....)