"Nikolay Ponomarenko" ...

Hello, Vlad!
You wrote  on Tue, 2 Sep 2008 17:46:51 +0300:


VK>     Не помню. Что значит - валится ?

https://groups.google.com/group/ru-firebird/browse_thread/thread/51e3edcf29e5900a#

Microsoft Visual C++ Runtime Library
Runtime Error!
R6034
An application has made an attempt to load the C runtime library
incorrectly.
Please contact the application's support team for more information.

VK>     По идее, рантайм и корректный манифест должны лежать в каталоге с
VK> exe, в остальных каталогах с dll'ами достаточно откорректированного
VK> манифеста.

Так и пытаюсь сделать. Но см. выше.

   А само приложение имеет встроенный манифест ? Не уверен, что должно...

   В общем, вот как они проверяют наличие манифеста. Может поможет разобраться,
что к чему (из crtlib.c)

static BOOL __cdecl _check_manifest(HMODULE hDllHandle)
{
   /* We check that the dll is loaded through a manifest.
   *
   * We check several conditions and exceptions:
   *
   * (1) if (pre-fusion OS)
   * return TRUE; [no need to check]
   *
   * (2) if dll is being loaded by instrumented-mscoree.dll.
   * return TRUE;
   *
   * (3) if (dll is loaded from system32)
   * return FALSE;
   *
   * (4) if (!(loaded through a manifest))
   * return FALSE;
   *
   * (5) if (loaded from %SystemRoot%\WinSxS)
   * return TRUE; [loaded from the WinSxS cache]
   *
   * (6) if (manifest is in the same folder as the dll)
   * return TRUE;
   *
   * (7) return FALSE; [loaded with another manifest]
   *
   * In general, when we encounter an error condition or something
   * which blocks us from checking if the dll is loaded through a
   * manifest, we do not return an error, but we let the dll to be
   * loaded. Notice that this is not a security feature: it's an helper
   * which will try (as much as possible) to discourage the practice
   * of not using a manifest to load the crt dll.
   */
...

--
Хорсун Влад

Ответить