Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > not a valid win32 application, проблемный kernel32


Автор: neosapient 26.9.2013, 10: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 сделать поиск функции, если она явно не входит в проект? Как отследить цепочку вызовов?
И, как вопрошал Чернышевский, что делать?

Автор: akizelokro 26.9.2013, 10:46
Первый стандартный вопрос, а версии библиотек для v11 добавлены на сервер?

Автор: 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)

Автор: neosapient 26.9.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
О результатах отпишусь позже

Автор: vinter 26.9.2013, 11:19
помимо установки обновления необходимо будет в настройках проекта сменить тулчайн на что_то_там_XP

Автор: akizelokro 26.9.2013, 11:43
Цитата(neosapient @  26.9.2013,  11:18 Найти цитируемый пост)
Если Вы о Runtime библиотеках (msvcp110 и msvcr110), то проект собирается с галочкой Multi-threaded (/MT)

 Здесь вопрос о том, что (я так понял, у вас MFC или Win32 проект) у вас не статическое подключение библиотек и либы v11 вы точно не копировали на сервер, но пробуете к ним обращаться.

Автор: neosapient 26.9.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)

Да, обновление помогло!
Спасибо! + за точное диагностирование проблемы.

Добавлено @ 14:37
Цитата(vinter @ 26.9.2013,  11:19)
помимо установки обновления необходимо будет в настройках проекта сменить тулчайн на что_то_там_XP

Да, сразу бросилось в глаза "Visual Studio 2012 - Windows XP (v110_xp)"
Спасибо.

Добавлено @ 14:38
Цитата(akizelokro @ 26.9.2013,  11:43)
Цитата(neosapient @  26.9.2013,  11:18 Найти цитируемый пост)
Если Вы о Runtime библиотеках (msvcp110 и msvcr110), то проект собирается с галочкой Multi-threaded (/MT)

 Здесь вопрос о том, что (я так понял, у вас MFC или Win32 проект) у вас не статическое подключение библиотек и либы v11 вы точно не копировали на сервер, но пробуете к ним обращаться.

У меня просто консольное приложение.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)