0
Under review
Кирилл Какурин 1 month ago • updated by Morevna Project 1 month ago 7

Здравствуйте. Скачал OpenToonz-1.1.3-morevna-win-32bit (win XP Pro Servise Pack 3), программа не запускается, выдает ошибку - точка входа в процедуру strtok_s не найдена в библиотеке DLL msvcrt.dll..............перезагрузка пк, переустановка программы - не помогают..................замена msvcrt.dll  на версию 32bit 
Windows XP msvcrt.dll 
v. 7.0.2600.5512 так же не помогла........Что можно сделать в данной ситуации?

Under review

Здравствуйте, Кирилл! Пожалуйста, удалите файл msvcrt.dll, который вы скопировали в папку "Program Files/OpenToonz/bin". После этого попробуйте скачать и установить "Microsoft Visual C++ 2015 Redistributable" - https://www.microsoft.com/en-us/download/details.aspx?id=52685

Я ранее устанавливал Microsoft Visual C++ 2013, после обновлял до Microsoft Visual C++ 2015, перезагружал, все равно не найдена точка входа......(из папки где OToonz dll удалил).

OK, мне удалось воспроизвести такую же ошибку на своей машине с Windows XP. Завтра-послезавтра посмотрю что можно сделать...

Установил "Microsoft Visual C++ 2015 Redistributable" - не помогло.  Попробовал разные версии библиотек msvcrt.dll - тоже без результатно.


В какой-то момент (после установки "Microsoft Visual C++ 2015 Redistributable"?) опентунз перестал показывать сообщение с ошибкой про strtok_s, но при этом по прежнему не запускается. При этом Dependency Walker (http://www.dependencywalker.com/) по прежнему показывает что не найден символ strtok_s.


Похоже, придётся вносить изменения в код.

Актуально:
https://ffmpeg.zeranoe.com/forum/viewtopic.php?p=10349#p10349

I followed the instructions but got "Entry point for strtok_s not found in msvcrt.dll" error again. So I edited executables with winhex to change "strtok_s" into "strtok" and now it works

А также:
https://ffmpeg.zeranoe.com/forum/viewtopic.php?p=10370#p10370


it seems that, adding a compilation macro, you can make the exe XP compatible.

И:


To avoid accidentally using API functions that are only available in later versions of Windows, you'll want to define the _WIN32_WINNT macro:
#define _WIN32_WINNT 0x502   // Designed to run on Windows XP SP2 and up
#include <windows.h>
If you don't set it then it typically defaults to 0x600 on later versions of the Windows SDK, selecting Vista as the target operating system. Btw, you'll probably have to give up on condition variables. There isn't enough detail in your question to offer a suitable replacement. Code that uses mutexes instead shouldn't be hard to find.


В коде уже есть кое-где #define _WIN32_WINNT 0x0500.


Должны ли мы поставить то же самое для libtnzbase?


Поставил в список задач нашему разработчику.