2014-02-01 1 views
2

У меня есть проект в VC2013 x64, который компилируется успешно. Он также запускается без каких-либо проблем в Win8, но сбой сразу же после достижения основного() на Win7 с сообщением:Почему мой двоичный файл работает в Windows 8, но не в Windows 7?

«Приложение было не определено для запуска (0x000007b). Нажмите« ОК », чтобы закрыть приложение».

Я уже пробовал установить все vc время автономной работы. Я пробовал это на нескольких Win7 и Win8 Systems, и это всегда одно и то же.

Я не уверен, что может вызвать это, я также не знаю, какие детали о проектах могут быть важны для определения проблемы. Я писал майну Программы в VC раньше и не имел такой проблемы. Вот почему я не проверял, работает ли программа на компьютере без win8 во время разработки, так как мой dev-машина в настоящий момент является win8. Я напишу несколько фактов по этому решению, может быть, это поможет с информацией:

  • Он использует boost.
  • это C++/clr
  • ссылается на другой проект, который написан на C# и использует некоторые классы из него. Цель платформы для этого проекта установлена ​​на «x64».
  • он использует локон
  • использует VMWare vddk (который является библиотека C)

Кроме того, то же самое происходит, если я установлю VC2013 на win7 компьютере. Он отлично компилируется, но не запускается на Win7 и сбой с тем же сообщением. Я также попытался перескакивать в набор инструментов vc2012, который приводит к тому же Crash.

Если у вас есть идеи, что может послужить причиной этого, отправьте сообщение. Я рад за идеи, которые могут вызвать это.

Thx Марк

[править] Я просто попытался добавления

#define _WIN32_WINNT _WIN32_WINNT_WIN7 
#include <WinSDKVer.h> 

, перед

#include <SDKDDKVer.h> 

в targetver.h. Он по-прежнему падает с этой ошибкой. [/ edit]

+0

ли в ОС Windows 7 машина/изображение имеют версию .net, в которой написана ваша программа? я думаю, что его 4.5 +, который включен в Windows 8+ и Windows 7, поставляется только с 3.5 –

+0

Очевидно, что вы проверили, является ли Win7 x64 ... спрашивающим на всякий случай ... –

+0

Вы пытались переустановить пакет C++ Redist ? Я сделал некоторые поиски, и некоторые люди с подобными проблемами указали, что DLL-библиотеки с перекрестными C++, похоже, не установлены правильно. [link] (http://www.bitdefender.com/support/how-to-solve-error-message-%22the-application-was-unable-to-start-correctly-(0x000007b)-click-ok-to -close-the-application% 22-1106.html) или [ссылка] (http://answers.microsoft.com/en-us/windows/forum/windows_7-performance/the-application-was-unable-to- start-correct/16765d09-bc69-4ebb-8471-54b1fa176ba1) – AnthonyBCodes

ответ

3

Ha! Я нашел это! Это были библиотеки boost, имеющие некоторые проблемы при компиляции без/clr, но связанные с программой, которая использует/clr. Чтобы обойти эту проблему я использовал ссылку импульса динамически с помощью

#define BOOST_THREAD_DYN_LINK 

во всем мире и положить соответствующие библиотеки DLL в рабочей директории процесса. Об этом читайте больше, это, кажется, старая проблема. Новая вещь кажется, что она работает на Win8 в любом случае.Ссылки я нашел только сообщить, что не работает вообще, может быть, они еще не пробовали его на Win8:

Using boost in CLR

Boost Threads with CLR

boost mutex C++/CLI problems

http://lists.boost.org/threads-devel/2009/10/0502.php

+0

Спасибо, что не был этим парнем! Это определенно сложнее выявить эту проблему, если она не возникает в Windows 8. http://xkcd.com/979/ –

Смежные вопросы