Модераторы: feodorv, GremlinProg, xvr, Fixin

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Программа компилируется, но ехе не запускается 
:(
    Опции темы
Andrej23
Дата 19.8.2011, 10:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



Добрый день.

Подскажите плз, что за ужасть случилась с моим проектом:

сегодня прихожу на работу, включаю vc++ 2005, моя прога компилируется, а отладочный exe запускаться не желает потому что
"Unable to start program .....exe".

программка - win32 проект под winapi.

проверил другие проекты - идут и консольные и оконные.

во время компиляции ошибок не пишет. говорит что build sucsess, 0 errors, 0 warnings. 
Пробовал просто сам ехе запустить через проводник, выскакивает окошко с надписью: ...exe не является приложением win32.

Пробовал создать новый проект и туда исходник закинуть, всё равно не запускается.

Подскажите плз, в чем может быть дело?


Дополнение:

Стал разбираться, пошел по истории исходников: неделю назад стал менять структуру программы т.к. нашел логическую нестыковку в модели и как только я начал менять структуру, сразу появилась такая фигня. Просто я не запускал программу пока блоки переделывал (всё равно бестолку), только компилировал чтобы на ошибки проверить.

В чем может быть дело?

Это сообщение отредактировал(а) Andrej23 - 19.8.2011, 10:41
PM MAIL   Вверх
spyswamp
Дата 19.8.2011, 11:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: нет
Всего: 7



Манифест.


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
Andrej23
Дата 19.8.2011, 13:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



Вот файл rrr.exe.embed.manifest
Код

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type="win32" name="Microsoft.VC80.DebugCRT" version="8.0.50608.0" processorArchitecture="x86" publicKeyToken="1fc8b3b9a1e18e3b"></assemblyIdentity>
    </dependentAssembly>
  </dependency>
</assembly>

Вот файл rrr.exe.intermediate.manifest
Код

<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT' version='8.0.50608.0' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>
</assembly>


да, манифесты стандартные (я про них даже и не знал ничего). Прога, которая до изменения структуры вполне себе работает, соответственно манифесты там генерируются правильно, после изменения exe не включается.

Это сообщение отредактировал(а) Andrej23 - 19.8.2011, 13:27
PM MAIL   Вверх
Andrej23
Дата 19.8.2011, 14:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



Посмотрел манифест файлы той версии, которая работает - они точно такие же. Наверное дело в чем-то другом.

при пересоздании ехе пишется такая строка:


LINK : C:\cpp\r_r\Debug\r_r.exe not found or not built by the last incremental link; performing full link

Это сообщение отредактировал(а) Andrej23 - 19.8.2011, 14:48
PM MAIL   Вверх
spyswamp
Дата 19.8.2011, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 349
Регистрация: 18.8.2006

Репутация: нет
Всего: 7



А ты как пересобираешь? Clean/Rebuild? Попробуй еще вручную весь интермидиэйт стереть.


--------------------
- why you call it beta?
- cuz it's betta then nothin'
PM MAIL   Вверх
Andrej23
Дата 19.8.2011, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



стер содержимое папок debug, снова нажал Rebuild, результат тот же.
PM MAIL   Вверх
Estranged
Дата 19.8.2011, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 30.8.2010

Репутация: 3
Всего: 3



Может быть собранный exe не win32, а win64 или еще что. Поглядеть на него pe просмотрщиком надо бы.
PM MAIL   Вверх
volatile
Дата 20.8.2011, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 13
Всего: 85



Цитата(Andrej23 @  19.8.2011,  10:00 Найти цитируемый пост)
не является приложением win32.

В main вначале пишете:
return 0;
компилируем,
Если опять не запускается, то копать опции проекта.
Если запускается, убираем return 0;  и дебагером...
PM MAIL   Вверх
Andrej23
Дата 20.8.2011, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



Спасибо, return 0 сегодня попробую. Иначе похоже придется отсекать куски программы чтобы понять из-за какого куска неправильно компилируется. 
(возможно где-то в структуре классов получилась циклическая ссылка друг на друга. не факт, но как вариант).

Цитата

Может быть собранный exe не win32, а win64 или еще что. Поглядеть на него pe просмотрщиком надо бы.

Эта прога, вариант неделей раньше запускается (в этом же проекте просто перезаписываю cpp файл). Св-ва проекта не менял. Только изменил структуру классов и дописал несколько функций.
Сам проект win32.

А как включить репросмотрщик и что это?
PM MAIL   Вверх
Earnest
Дата 22.8.2011, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Цитата(Andrej23 @  20.8.2011,  11:02 Найти цитируемый пост)
Св-ва проекта не менял. Только изменил структуру классов и дописал несколько функций.

Может ему стало не хватать какой-нибудь DLL после этого? Dependence-вьюером его посмотри... причем полностью (рекурсивно, все зависимости).
У меня были ситуации, когда с какого-то перепуга проект цеплял DLL не той версии... 
Dependence-viewer - это утилита, которая, как следует из названия, показывает все библиотеки, которые требуются для загрузки exe. Должна быть в составе MSVC (называется Depends.exe), но есть и куча других, только свистни гуглу... Полезно иметь в арсенале программиста.


--------------------
...
PM   Вверх
Andrej23
Дата 22.8.2011, 10:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



проверил return 0; первой строкой в tWinMain() - результат не изменился. Вчера попробовал скомпилировать этот же проект на VS 2008, а не на 2005 - выдало ошибку что не хватает database ' ' (может это как-то поможет).

Посмотрел через Depends view:

IESHIMS.DLL      не удается найти указанный файл (2)
WER.DLL            не удается найти указанный файл (2)
MPR.DLL        просто значок красный (может активный?)      

Warning: At least one delay-load dependency module was not found.
Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module.

этот  IESHIMS.DLL и wer.dll вызываются из setupapi.dll-> shell32.dll -> shdocvw.dll -> mshtml.dll ->  iframe.dll 


Дополнение: посмотрел exe файл недельной давности. Те же файлы пишутся ненайденными, но всё работает (странно).
В mpr.dll функция WNetRestoreConnectionA помечена красным.


Это сообщение отредактировал(а) Andrej23 - 22.8.2011, 10:58
PM MAIL   Вверх
GremlinProg
Дата 22.8.2011, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2706
Регистрация: 9.8.2005
Где: Тюмень

Репутация: 99
Всего: 106



http://social.technet.microsoft.com/Forums...3-c720ccbd3d2c/
Цитата(ieshims.dll missing)

Ieshims.dll and wer.dll are only used on Vista and above machines for IE8, they are not needed in XP and thats why you can't find them. 

т.е., я так понимаю на работе стоит что-то выше XP?

Добавлено через 4 минуты и 29 секунд
хотя, нет, наверное даже не так: компилируется в конфигурации для чего-то выше чем XP (ну и соответственно, на чем-то выше XP, раз сборка таки проходит удачно), а запускается на XP и ниже?

Добавлено через 12 минут и 39 секунд
Цитата(Andrej23 @  19.8.2011,  12:00 Найти цитируемый пост)
Пробовал просто сам ехе запустить через проводник, выскакивает окошко с надписью: ...exe не является приложением win32.

а может все проще: это реально не win32, а WOW64, и это не ошибка приложения, а ошибка совместимости, т.е. этот exe можно запускать только на 64-битных осях


--------------------
"Гений всегда разумнее, чем умнее. Ум — это машина, разум — водитель этой машины."
PM WWW ICQ   Вверх
Andrej23
Дата 22.8.2011, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



Нет, у меня XP SP3.
Прога (вариант неделей раньше) компилируется и запускается на этой же машине, в ней просто заменяю основной cpp файл. Cам проект win32.
Делаю без всяких заморочек. VC++ и winapi. Прога со стороны программирования примитивнейшая (расчеты и вывод), никаких изысков.

Это сообщение отредактировал(а) Andrej23 - 22.8.2011, 16:13
PM MAIL   Вверх
Andrej23
Дата 22.8.2011, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 3.11.2006

Репутация: нет
Всего: нет



Разобрал прогу, оставил только структуру классов - не работает. Перекинул структуру классов в новый сгенерированный проект (только основное окно и менюшка).

Потом стал уже отключать классы по очереди.  На одном из классов пограмма заработала. Стал подключать классы обратно - программа всё равно работает.

между включениями удалял каталог debug c exe файлом. Единственное, что удалось засечь - это строку 

LINK : C:\cpp\r_r\Debug\r_r.exe not found or not built by the last incremental link; performing full link

когда программа не запускалась.


Добавление:

замучился. посмотрите плз, в чем дело. Выкладываю максимально урезнный код - часть структуры классов в сгенерированном проекте win32 оконном. Этот вариант компилируется, но не запускается:

Код

#include "stdafx.h"
#include "111.h"

#define MAX_LOADSTRING 100

//КОНСТАНТЫ
const int MNS=5;
const long MND=10000;
const int    RMP=50;
const int  MNAD=MNS*2*50;
const int  DemStatusSize=MNS*4+1;

//ОПРЕДЕЛЕНИЯ
#define MAX_LOADSTRING 100
#define Buy 1
#define Sell 2
#define Long 0
#define Short 1
#define Opens 0
#define Closes 1

//ОПИСАНИЕ КЛАССОВ
class Tick
{
public:
    double  Price,
            Open,High,Low,Close,
            Bid,
            Ask;
    long    Year,
            Volume;
    short int Month,
            Day,
            Hour,
            Minute,
            Secunde;

    Tick();
    void Clear(void);
    void PriceCalc(void);
};
class StatusDemandsCell{    
public:
    double    Price;
    long    Vol;
    int        Reminder;
    int        BS;
    
    StatusDemandsCell();
    void Clear(void);
};
class StatusTable{
public:
    StatusDemandsCell d[DemStatusSize];
    int index;
    void Clear(void);
    void Some2One(void);
    void Sort(void);

};

class Demands{
public:
    char    NumberDemand[32],
            Time[32],
            SCode[32];
    int        BS,
            Status;
    int        Volume,
            Reminder,
            DeltaReminder;
    double    Price,
            NumDemP1,NumdemP2;
    short int hour,minute,sec;
    long    NumLine;
    void Clear(void);
};


template <long size> class DTable{
public:
    Demands z[size];
    int        FilledCell,
            CurColumn,
            MaxNumColumns;
    long    CurRow,
            LastProcActDemCurRow,
            FirstActiveDem;
    DTable();
    void ResGoToMyTable(double RealData);
    void ResGoToMyTableS(char *str);
    void ClearToIndex(void);
};

template <long size> class DTableDDS: public DTable <size>{
public:
        int NewBS[size],
            NewVolume[size];
        double NewPrice[size];
        void SendDemandsThread(void);
private:
        void SortNear(void);
};

template <long size> class DTablePointers: public DTable<size> {
public:
    Demands *z[size];
    void MakeActDemTable(void);
    void Sort(void);
};

class TradeTableRow{
public:
    char    Time[32],
            SCode[32];
    int        BS,
            Volume;
    double    Price,
            NumDem;
    short int hour,minute,sec;
    int        NumLine;
    long    NumTrd;
};
class Trades{
public:
    TradeTableRow z[MND];
    int        FilledCell,
            CurColumn,
            MaxNumColumns;
    long    CurRow,
            LastProc;
    Trades();
    void ResGoToMyTable(double RealData);
    void ResGoToMyTableS(char *str);
    void TradeGoToReg(void);
};

class rs{
public:
    double AOP;
    int CP[2];
    //------------
    Demands DemOpen[RMP*2][2][2],
            DemClose[RMP*2][2][2];
    int        index[2][2];
    Trades    Pos[RMP*2][2];
    int FindDemByNum(double Num, int OpenClose);
    int ConvertToCurPos2(int x, int BS,int Side);
};
class res{
public:
    double Zero;
    double RW;
    rs R[MNS][2];
    int CR;
    res();

private:
    void CalcZero(void);

};
//------------переменные -------------------------------
DTable<MND> DemTbl;
DTableDDS<MNAD*2> DemDeltaStatus;
Trades    TrdTbl;
DTablePointers<MND> DemTblQ;
DTablePointers<MNAD> ActDem;

Tick    LastPrice;
res res1;


// Global Variables:
HINSTANCE hInst;                                // current instance
TCHAR szTitle[MAX_LOADSTRING];                    // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING];            // the main window class name

// Forward declarations of functions included in this code module:
ATOM                MyRegisterClass(HINSTANCE hInstance);
BOOL                InitInstance(HINSTANCE, int);
LRESULT CALLBACK    WndProc(HWND, UINT, WPARAM, LPARAM);
INT_PTR CALLBACK    About(HWND, UINT, WPARAM, LPARAM);

int APIENTRY _tWinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPTSTR    lpCmdLine,
                     int       nCmdShow)
{
    UNREFERENCED_PARAMETER(hPrevInstance);
    UNREFERENCED_PARAMETER(lpCmdLine);

    // TODO: Place code here.
    MSG msg;
    HACCEL hAccelTable;

    // Initialize global strings
    LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
    LoadString(hInstance, IDC_MY111, szWindowClass, MAX_LOADSTRING);
    MyRegisterClass(hInstance);

    // Perform application initialization:
    if (!InitInstance (hInstance, nCmdShow))
    {
        return FALSE;
    }

    hAccelTable = LoadAccelerators(hInstance, MAKEINTRESOURCE(IDC_MY111));

    // Main message loop:
    while (GetMessage(&msg, NULL, 0, 0))
    {
        if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
    }

    return (int) msg.wParam;
}

ATOM MyRegisterClass(HINSTANCE hInstance)
{
    WNDCLASSEX wcex;

    wcex.cbSize = sizeof(WNDCLASSEX);

    wcex.style            = CS_HREDRAW | CS_VREDRAW;
    wcex.lpfnWndProc    = WndProc;
    wcex.cbClsExtra        = 0;
    wcex.cbWndExtra        = 0;
    wcex.hInstance        = hInstance;
    wcex.hIcon            = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_MY111));
    wcex.hCursor        = LoadCursor(NULL, IDC_ARROW);
    wcex.hbrBackground    = (HBRUSH)(COLOR_WINDOW+1);
    wcex.lpszMenuName    = MAKEINTRESOURCE(IDC_MY111);
    wcex.lpszClassName    = szWindowClass;
    wcex.hIconSm        = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));

    return RegisterClassEx(&wcex);
}

BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
{
   HWND hWnd;

   hInst = hInstance; // Store instance handle in our global variable

   hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
      CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, NULL, NULL, hInstance, NULL);

   if (!hWnd)
   {
      return FALSE;
   }

   ShowWindow(hWnd, nCmdShow);
   UpdateWindow(hWnd);

   return TRUE;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
    int wmId, wmEvent;
    PAINTSTRUCT ps;
    HDC hdc;

    switch (message)
    {
    case WM_COMMAND:
        wmId    = LOWORD(wParam);
        wmEvent = HIWORD(wParam);
        // Parse the menu selections:
        switch (wmId)
        {
        case IDM_ABOUT:
            DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
            break;
        case IDM_EXIT:
            DestroyWindow(hWnd);
            break;
        default:
            return DefWindowProc(hWnd, message, wParam, lParam);
        }
        break;
    case WM_PAINT:
        hdc = BeginPaint(hWnd, &ps);
        // TODO: Add any drawing code here...
        EndPaint(hWnd, &ps);
        break;
    case WM_DESTROY:
        PostQuitMessage(0);
        break;
    default:
        return DefWindowProc(hWnd, message, wParam, lParam);
    }
    return 0;
}

// Message handler for about box.
INT_PTR CALLBACK About(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam)
{
    UNREFERENCED_PARAMETER(lParam);
    switch (message)
    {
    case WM_INITDIALOG:
        return (INT_PTR)TRUE;

    case WM_COMMAND:
        if (LOWORD(wParam) == IDOK || LOWORD(wParam) == IDCANCEL)
        {
            EndDialog(hDlg, LOWORD(wParam));
            return (INT_PTR)TRUE;
        }
        break;
    }
    return (INT_PTR)FALSE;
}
template <long size> DTable<size>::DTable()    {
    MaxNumColumns=9;
    FilledCell=0;
    CurColumn=0;
    CurRow=0;
    FirstActiveDem=0;
}
Trades::Trades()    {MaxNumColumns=8;    FilledCell=0; CurColumn=0; CurRow=0;
}

Tick::Tick()
{
    Price=0; Open=0;High=0;Low=0;Close=0;
    Year=0;    Month=0;Day=0;Hour=0;Minute=0;Secunde=0;Volume=0;
}

res::res(){
    CR=0; RW=3; Zero=0;    
    for (int n=0;n<MNS;n++) int x=0;
}

template <long size> void DTablePointers<size>::Sort(void){
    long n=0,m=0;
    Demands *TPDs;
    for (n=0;n<CurRow;n++)
        for (m=0;m<CurRow;m++)
            if (z[n]->Reminder>z[m]->Reminder && n>m){
                TPDs=z[n];
                z[n]=z[m];
                z[m]=TPDs;
            }//if (d[n].Reminder>d[m].Reminder && n>m)
}//template <long size> void DTablePointers<size>::Sort(void)


Это сообщение отредактировал(а) Andrej23 - 22.8.2011, 16:05
PM MAIL   Вверх
volatile
Дата 22.8.2011, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 13
Всего: 85



Покажите как определены макросы, (и определены ли?)
_WIN32_WINNT
WINVER

Скорей всего, дело в них.

Они находятся либо в "stdafx.h" либо в "targetver.h"

Также определить этот макрос  можно  с  помощью  параметра  компилятора  /D,
так что и командную строку не помешает посмотреть.


PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0719 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.