not a valid win32 application, проблемный kernel32

 
0
 
C++
ava
neosapient | 26.09.2013, 11:30
Здравствуйте.

Есть программа, которая успешно прошла тестирование под win7 и на сервере под управлением win2008.
При переносе проекта на сервер под управлением win2003 программа перестала запускаться.
При старте вываливается ошибка "not a valid win32 application".

Програмка собрана под x86 семейство процессоро; сервер win2003 64-разрядный,  и по логике, должен был нормально определить версию программы.

Решил посмотреть зависимости от dll'ек и ужаснулся, ведь несовместимой оказалась kernel32.dll.
user posted image

Как я понял, не были найдены функции CloseThreadpoolWait, CloseThreadpoolTimer, CompareStringEx.

Проблема в том, что впрямую я их не вызываю:
1) Пользуюсь libcurl - но ввиде подгружаемой dll; Но проблема не в ней (по скриншету видно), а в программе.
2) Пользуюсь std::thread и std::mutex, возможно в коде этих компонентов скрыт вызов трех недостающих функций?
3) Пользуюсь VC11, возможно студия добавляет зависимость от трех недостающий функций (мало вероятно, но всё же)?

Как в проекте под VC сделать поиск функции, если она явно не входит в проект? Как отследить цепочку вызовов?
Comments (6)
ava
akizelokro | 26.09.2013, 10:46 #
Первый стандартный вопрос, а версии библиотек для v11 добавлены на сервер?
ava
Amp | 26.09.2013, 10:49 #
Возможно в этом дело: "Visual Studio 2012 does not support Windows XP and Windows Server 2003 development. You must install Visual Studio 2012 Update 1 to add support for Windows XP and Windows Server 2003." (http://msdn.microsoft.com/en-us/library/vstudio/ws0swas0.aspx)
ava
neosapient | 26.09.2013, 11:18 #
Цитата


Первый стандартный вопрос, а версии библиотек для v11 добавлены на сервер?



Если Вы о Runtime библиотеках (msvcp110 и msvcr110), то проект собирается с галочкой Multi-threaded (/MT)

Цитата


Возможно в этом дело: "Visual Studio 2012 does not support Windows XP and Windows Server 2003 development. You must install Visual Studio 2012 Update 1 to add support for Windows XP and Windows Server 2003." (http://msdn.microsoft.com/en-us/library/vstudio/ws0swas0.aspx)


Ок, начал обновление студии до версии VS2012.SP3
О результатах отпишусь позже
ava
vinter | 26.09.2013, 11:19 #
помимо установки обновления необходимо будет в настройках проекта сменить тулчайн на что_то_там_XP
ava
akizelokro | 26.09.2013, 11:43 #
Цитата (neosapient @  26.9.2013,  11:18 findReferencedText)
Если Вы о Runtime библиотеках (msvcp110 и msvcr110), то проект собирается с галочкой Multi-threaded (/MT)

Здесь вопрос о том, что (я так понял, у вас MFC или Win32 проект) у вас не статическое подключение библиотек и либы v11 вы точно не копировали на сервер, но пробуете к ним обращаться.
ava
neosapient | 26.09.2013, 14:35 #
Цитата (Amp @ 26.9.2013,  10:49)
Возможно в этом дело: "Visual Studio 2012 does not support Windows XP and Windows Server 2003 development. You must install Visual Studio 2012 Update 1 to add support for Windows XP and Windows Server 2003." (http://msdn.microsoft.com/en-us/library/vstudio/ws0swas0.aspx)

Да, обновление помогло!
Спасибо! + за точное диагностирование проблемы.
Please register or login to write.
Firm of day
Вы также можете добавить свою фирму в каталог IT-фирм, и публиковать статьи, новости, вакансии и другую информацию от имени фирмы.
Подробнее
Contributors
advanced
Submit