-
Здравствуйте, уважаемые Мастера.
существует Dll-файл "magic.dll", который лежит в текущей папке (папке exe-шника).
На одной машине вызов LoadLibrary('magic.dll') возвращает 0, в то время как на других машинах загрузка Dll происходит нормально. При статической линковке возникает страшный Exception. Хотя, опять-таки, на других машинах всё ok.
Сначала я подумал, что в какой-нить "C:\Windows\" есть попорченная "magic.dll" и как раз её загрузить и не получается. Я переименовал Dll, вызываю LoadLibrary с новым именем, но результат прежний.
Из-за чего это может быть? Помогите, пожалуйста.
P.S. антивирус - NOD32. На другой машине с NOD32 всё работает нормально. Антивирусные базы одинаковые.
-
А GetLastError что говорит?
-
> DevilDevil (15.11.08 11:07)
Добавьте строчку:
hLib := LoadLibrary('magic.dll');
Win32Check(hLib <> 0);
и сразу все станет ясно.
-
> Sergey Masloff (15.11.08 11:11) [1]
> Юрий Зотов © (15.11.08 12:46) [2]
сегодня проверю. спасибо!
-
ntfs-Права на файл неподходящие?
-
System Error. Code: 14001.
Приложение не было запущено, поскольку оно некорректно настроено. повторная установка приложения может решить данную проблему.
> Правильный$Вася (15.11.08 19:26) [4]
dont understand.
и там и там - администратор.
и там и там - XP.
-
ERROR_SXS_CANT_GEN_ACTCTX
14001
0x36B1
The application has failed to start because its side-by-side configuration is incorrect. Please see the application event log for more detail.
"Это что вообще за фигня ?"(с)
-
а точно в ней собака? может, она в свою очередь исчо че-то подвызывает?
-
> существует Dll-файл "magic.dll"
Э... а файлик, случаем, не на msvc80 собран?
-
-
> DevilDevil (16.11.08 01:54) [9]
Есть и другие способы лечения (но не всегда помогают)
Create directory Microsoft.VC80.CRT next to your .exe and .manifest file. Create Microsoft.VC80.CRT.manifest file into that directory with data:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Copyright ? 1981-2001 Microsoft Corporation -->
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<noInheritable/>
<assemblyIdentity
type="win32"
name="Microsoft.VC80.CRT"
version="8.0.50608.0"
processorArchitecture="x86"
publicKeyToken="1fc8b3b9a1e18e3b"
/>
<file name="msvcr80.dll"/>
<file name="msvcp80.dll"/>
<file name="msvcm80.dll"/>
</assembly>
The versions of course has to match for one which was used to compile the application. After that just copy the 3 .dlls into that folder and you should be fine.
-
> "Гугл" посоветовал просмотреть системные логи.
гугл тебе просто перевел сообщение об ошибке...
DevilDevil (16.11.08 00:39) [6]
> The application has failed to start because its side-by-side configuration is incorrect.
> Please see the application event log for more detail.
вот это как раз совет их посмотреть...
учи английский.
-
> учи английский.
неправильно выразился.
гугл сказал как посмотреть логи.
а когда ошибки были найдены - гул сказал как лечить.
> Ляпа (16.11.08 01:58) [10]
но я так и не понял, из-за чего бага то ?
на другиъх компах VC++ не установлен, хотя dll грузилась.
подозреваю, что дело в 3м ServicePack-е, который стоит на других машинах и не стоит на этой (на этой - 2й).
-
> что дело в 3м ServicePack-е, который стоит на других машинах
> и не стоит на этой (на этой - 2й).
нет слов...
-
> KilkennyCat © (16.11.08 15:14) [13]
типа умный что ли ?
-
DevilDevil (15.11.08 11:07)
Попробуй вызвать перед загрузкой DLL
InitCommonControls();
-
> DevilDevil (16.11.08 17:14) [14]
нет, других слов...
-
> Тыщ © (16.11.08 17:55) [15]
зачем?