У нас есть смешанный проект Java / JRuby, в котором используется C ++ — DLL, разработанная в Microsoft Visual Studio. Недавно поставщик этой DLL обновил свою среду разработки до Visual Studio 2015 professional. Это потребовало установки новых библиотек времени выполнения (vcredist_x86.exe) на наших компьютерах (которые работают в Windows 7). После того, как мы это сделали, все заработало как положено.
Однако мы также используем сервер (Microsoft Windows Server 2003 R2 Standard Edition с пакетом обновления 2) для запуска регрессионных тестов. Я установил новые библиотеки времени выполнения, и DLL загружена. Но когда программа запускается, мы получаем fopen
ошибка, когда DLL пытается загрузить определенный файл. errno
дает 2 (ENOENT
в соответствии с errno.h
). Файл присутствует, DLL пытается загрузить его, используя относительный путь. Это не первый файл, который открывается через fopen
и доступ к другим файлам, кажется, работает.
У меня нет доступа к источнику и я не могу отладить на сервере, и разработчики DLL не могут воспроизвести проблему.
Кто-нибудь сталкивался с подобной проблемой на Windows Server после обновления до Visual Studio 2015? И если да, то как ты решил это?
Поставщик DLL, вероятно, использовал набор инструментов по умолчанию v140, который не совместим с Server 2003. Если вы используете Server 2008 для тестов, я подозреваю, что у вас все будет хорошо. Или, если они могут использовать набор инструментов v140_xp, я подозреваю, что у вас все будет хорошо. Эта опция здесь: Свойства конфигурации -> Общие -> Набор инструментов платформы
Других решений пока нет …