 Старый проет
    Старый проет
    
  |  | Наши проекты: Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту | |
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS | 
| [216.73.216.107] | 
|   | 
 | 
 Правила раздела Visual C++ / MFC / WTL (далее Раздела)
    Правила раздела Visual C++ / MFC / WTL (далее Раздела)
   FAQ Раздела
 FAQ Раздела   Обновления для FAQ Раздела
 Обновления для FAQ Раздела    Поиск по Разделу
 Поиск по Разделу   MSDN Library Online
 MSDN Library Online| Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) | 
 Старый проет
    Старый проет
    
  | 
         
         
          
           Сообщ.
           #1
          
          , 
          
         
         | |
|  | Зравствуйте. Проект был написан лет 18 назад в XP SP3 32bit на VS6 VisualC++ MFC, потом в 2012 на - VisualStudio 2010 внесены какие-то изменения. Все работало. Сейчас возникла необходимость предать ему новую жизнь, изменив, добавив нужное. Win10 64it, VisualStudio 2019 Community VisualC++ MFC платформа win32 Получил: Ошибка C1083 Не удается открыть файл созданный компилятором: .\Debug" /EHsc /nologo /Fo.\Debug".asm: Invalid argument, Файл: C:\MyProjects\CNF\StdAfx.cpp Про с1083 много написано, читал. – без толку. Помогите | 
| 
         
         
          
           Сообщ.
           #2
          
          , 
          
         
         | |
|  |  Слишком мало данных. Попробуй создать проект заново и перетащить все исходники.   | 
|   | 
         
         
          
           Сообщ.
           #3
          
          , 
          
         
         | 
|  |  Походу там просто лишняя кавычка затесалась   | 
| 
         
         
          
           Сообщ.
           #4
          
          , 
          
         
         | |
|  |  Система упала, надо  Win10 переустановить. Прям, «Не понос , так золотуха». Но я на правильном пути. Нашел предыдущую версию  программы. Установил, запустил – ошибка несовместимости /Zi и /Gy-, что нормально для VS6. Исправил. Ошибок нет. EXE-шника тоже… посмотрел в настройках -	…/Debug, запустил поиск на всякий случай - нигде нет. Думаю, отключу антивирус. Не успел.   | 
| 
         
         
          
           Сообщ.
           #5
          
          , 
          
         
         | |
|  |  Восстановил win10. Есть ошибки.  ON_MESSAGE(WM_ICONNOTIFY, OnIcon) static_cast: невозможно преобразовать "void (__thiscall CCNFDlg::* )(WPARAM,LPARAM)" в "LRESULT (__thiscall CWnd::* )(WPARAM,LPARAM)" Привет от VS6 Теперь не voitd, а LRESULT и как же преобразовать? Я переопределил функцию, видимо, криво, не помогло. | 
| 
         
         
          
           Сообщ.
           #6
          
          , 
          
         
         | |
|  | Цитата TyT @  ON_MESSAGE_VOID(WM_ICONNOTIFY, OnIcon) | 
| 
         
         
          
           Сообщ.
           #7
          
          , 
          
         
         | |
|  |  Можно поподробней. Я объявил  ON_MESSAGE_VOID(WM_ICONNOTIFY, OnIcon) в BEGIN_MESSAGE_MAP Пишет: ошибка C2065 - необъявленный идентификатор Прочитать где-нибудь на стороне не получилось. | 
| 
         
         
          
           Сообщ.
           #8
          
          , 
          
         
         | |
|  |  Он объявлен в <afxpriv.h> Правда 2019 студии у меня давно нет. Я смотрю в 2022. Если ваша функция не принимает и не возвращает параметров.   // like ON_MESSAGE but no return value #define ON_MESSAGE_VOID(message, memberFxn) \     { message, 0, 0, 0, AfxSig_vv, \         (AFX_PMSG)(AFX_PMSGW)(void (AFX_MSG_CALL CWnd::*)(void))&memberFxn }, Во вторых вы можете переопределить свою метод как   LRESULT OnIcon(WPARAM, LPARAM) {    ....    return 1; } B message map использовать   ON_MESSAGE(WM_ICONNOTIFY, &YourClass::OnIcon) Добавлено Метод я так понял используется для нотификации от иконки в системном трее? | 
| 
         
         
          
           Сообщ.
           #9
          
          , 
          
         
         | |
|  |  sharky72, большое спасибо! Это еще не конец: « ссылка на неразрешенный внешний символ __imp__SetLayeredWindowAttributes@16 в функции "public: bool __thiscall ATL::CHeapPtrBase<char,class ATL::CCRTAllocator>::AllocateBytes(unsigned int)" (?AllocateBytes@?$CHeapPtrBase@DVCCRTAllocator@ATL@@@ATL@@QAE_NI@Z).» Функция SetLayeredWindowAttributes из nafxcwd.lib у меня в программе не встречается. Как исправлять такую ошибку? | 
| 
         
         
          
           Сообщ.
           #10
          
          , 
          
         
         | |
|  |  Она берется из WinAPI и как написано в документации требует как минимум _WIN32_WINNT 0x0500, а для VS6 по умолчанию 0x0401 У вас в настройках проекта какой SDK указан? Макрос _WIN32_WINNT определен на какую версию? Как вариант уберите все определения макроса _WIN32_WINNT, WINVER и т.д. и подключите <SDKDDKVer.h> в прекомпилируемом загловке чтобы использовать сборку под последнюю версию Windows/SDK/DDK В настройках проекта поставьте SDK (latest version) В последних версиях VS шаблон проекета создает targetver.h в котором эти макросы переопределены на последнюю версию   #pragma once // Including SDKDDKVer.h defines the highest available Windows platform. // If you wish to build your application for a previous Windows platform, include WinSDKVer.h and // set the _WIN32_WINNT macro to the platform you wish to support before including SDKDDKVer.h. #include <SDKDDKVer.h> | 
| 
         
         
          
           Сообщ.
           #11
          
          , 
          
         
         | |
|  |  Было: _WIN32_WINNT 0x0A00 Версия пакета SDK для win10 последняя установленная Стандарт С++ 14 | 
| 
         
         
          
           Сообщ.
           #12
          
          , 
          
         
         | |
|  |  Смотрите в сторону линкера. После конвертации проекта VS6 остается слишком много мусора. Что именно там у вас осталось прописано от старого проекта я не знаю. Как вариант сбросить значения по умолчанию. Эта функция объявлена в User32.lib и почему ее линкер не находит - не скажу. Мне такое не встречалось. | 
| 
         
         
          
           Сообщ.
           #13
          
          , 
          
         
         | |
|  |  Выяснил, что надо ориентироваться на VS2017, если интересно, вот: https://learn.microsoft.com/ru-ru/cpp/build...p?view=msvc-170 установил VS2017, что надо, видимо криво, там не все так как написано. Сново: LNK2001 неразрешенный внешний символ "__imp__SetLayeredWindowAttributes@16" Хочу спросить: можно узнать, что вызывает эту функцию, может сделать по другому… У меня VSComunity 2017 – 15.9.67 и «средства поддержки C++ Windows XP для средств VS 2017 (версия 141) [не рекомендуется]» - нет. Найти VS2017 непросто, подставляют 2022 | 
| 
         
         
          
           Сообщ.
           #14
          
          , 
          
         
         | |
|  |  Ну документацию по WinAPI никто не отменял. И вряд ли вы сделаете по другому. Это связано с отрисовкой окон. https://learn.microsoft.com/en-us/windows/w...indowattributes Ну поставьте 2022. Дело не столько в студии сколько в установленных библиотеках SDK/ATL/MFC У меня поддержки XP вообще нет (или у вас проект конкретно под старые версии Windows?). Потому что под нее уже ничего не пишу. P.S. если ваш проект не секретный - могу посмотреть. | 
| 
         
         
          
           Сообщ.
           #15
          
          , 
          
         
         | |
|  |  Думаю проблема в настройках проекта. 	  |