Cualquier pregunta de un PROFI a un SUPER PROFI - 1. - página 11

 
joo:

Hice esto, pero sigue el mismo error:

Zhunko:

¿Se ha copiado el proyecto en VC++ 6.0 con sus propiedades o se ha configurado por separado?

He tenido tres ocasiones en las que he utilizado funciones en VS 2010 que no están disponibles en XP. Todo funcionaba en Vista y 7, pero el terminal no veía la biblioteca en XP.

Zhunko:

Lo escribí al principio del tema. Ocurre cuando se utilizan funciones WinAPI que están ausentes en XP. Otra razón más. Si la versión mínima del sistema está limitada por una superior.

Ahora estoy experimentando lo mismo. Nunca he llegado a buscar esta función.

 

Zhunko:

joo:

Hice esto, pero sigue el mismo error:

Zhunko:

¿Se ha copiado el proyecto en VC++ 6.0 con sus propiedades o se ha configurado por separado?

He tenido tres ocasiones en las que he utilizado funciones en VS 2010 que no están disponibles en XP. Todo funcionaba en Vista y 7, pero el terminal no veía la biblioteca en XP.

Zhunko:

Lo escribí al principio del tema. Ocurre cuando se utilizan funciones WinAPI que están ausentes en XP. Otra razón más. Si la versión mínima del sistema está limitada por una superior.

Ahora estoy experimentando lo mismo. Nunca he llegado a buscar esta función.

¡He encontrado la razón! Pero no sé qué hacer con él.

El problema resultó estar en esta construcción de un método de clase con métodos estáticos:

    static HWND HandleByProcessIdAndClass()
     {
      HWND   hwndLocal = NULL; // Дескриптор искомого окна.
      size_t i = 0;

      ::EnterCriticalSection(&GetInstance()->csOne);
      ::EnterCriticalSection(&GetInstance()->csMultiple);
     ................. Здесь защищаемый код ...................
      ::LeaveCriticalSection(&GetInstance()->csMultiple);
      ::LeaveCriticalSection(&GetInstance()->csOne);
      return(hwndLocal);
     }

Una vez que elimine la sincronización (resaltada en rojo) la biblioteca se vuelve visible para XP. En Vista funciona.

¿Tal vez no es suficiente la versión de alguna biblioteca del sistema?

=======

Sobre esta clase, necesito aclarar.

Todos los métodos de la clase con métodos estáticos "Windows", y hay unos 80, tienen una sincronización similar.

El método especificado se llama primero en el constructor de una instancia de otra clase "WindowsMT4".

Parece que la clase "Windows" se inicializa fuera de tiempo.

 

He encontrado la causa. Andrei ayudó. Hice mal los monotonales.

XP y Vista inicializan las clases de forma diferente. Necesitas los monos adecuados.

 
Zhunko:

He encontrado la causa. Andrei ayudó. Hice mal los monotonales.

XP y Vista inicializan las clases de forma diferente. Necesitas los monos adecuados.


Eso es tan asqueroso. ¡Esto es horrible!
 
C-4:

Eso es un verdadero fastidio. ¡Esto es horrible!
Oh, vamos... :-)) Acabo de convertir una clase con métodos estáticos en singleton. Todo funciona.
 
Zhunko:
Sí, vale... :-)) Acabo de convertir una clase con métodos estáticos en singleton. Todo funciona.

Pregunta para que los superprofesionales compartan sus experiencias:)) - ¿cómo se elimina un singleton?

 
alsu:

Pregunta para que los superprofesionales compartan sus experiencias:)) - ¿cómo se elimina un singleton?

¿Te refieres a despejar los recursos? En el destructor puedes.
 
Zhunko:
¿Qué quiere decir con recursos claros? Se puede en el destructor.

No, en el sentido de eliminar el objeto en sí: ¿qué procedimiento decide cuándo eliminarlo?

No tengo ningún propósito práctico en este momento, sólo recordé que una vez estuve haciendo un proyecto, que utilizaba varias plantillas singleton - así que, siempre había problemas con el momento de la eliminación del singleton - tuve que hacer algunos problemas con el rastreo de referencias, el envoltorio del destructor en las envolturas y así... Y cuando, por ejemplo, uno de los módulos se estrellaba debido a una excepción, era un desastre... Como resultado, esa fue la última vez que me metí con los singletons, ya que me pareció mucho más una molestia que un beneficio)) Tal vez me equivoque.

 
alsu:

No, en el sentido de eliminar el objeto en sí: ¿qué procedimiento decide cuándo eliminarlo?

No tengo ningún propósito práctico en este momento, sólo recordé que una vez estuve haciendo un proyecto, que utilizaba varias plantillas singleton - así que, siempre había problemas con el momento de la eliminación del singleton - tuve que hacer algunos problemas con el rastreo de referencias, el envoltorio del destructor en las envolturas y así... Y cuando, por ejemplo, uno de los módulos se estrellaba debido a una excepción, era un desastre... Como resultado, esa fue la última vez que me metí con los singletons, ya que me pareció mucho más una molestia que un beneficio)) Tal vez me equivoque.

Aprendió a ser soltero recientemente. He aprendido que no puedo prescindir de ellos. No sé cómo borrar. No era necesario.
 

alsu:

En consecuencia, ésa fue la última vez que me metí con los singletons, ya que me pareció que era mucho más complicado de lo que merecía la pena). Tal vez me equivoque.

Si tiene problemas para eliminar un singleton, probablemente no se esté utilizando correctamente. Aunque los singletons también son diferentes, por ejemplo, el fénix.