Устранить зависимости в проекте (и уменьшить размер проги)

Тема в разделе "LANGS.C", создана пользователем perdimonokl, 30 сен 2007.

  1. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    BlackParrot
    Манифест - манифесту рознь - тот который "для красивых окошек" подключается в: свойства проекта -> инструмент манифеста -> вход и выход -> дополнительные файлы манифеста
    А тот который требует наличия соответсвующей версии CRT в dll в: свойства проекта -> компновщик -> файл манифеста -> создавать манифест -> да/нет.
    perdimonokl
    Для устранения зависимости достаточно компилировать с /MT (свойства проекта -> C/C++ -> создание кода -> библиотека времени выполнения), но если CRT реально не используется, то лучше отключить и тот манифест, что в линкере и вообще сделать так или так .
     
  2. BlackParrot

    BlackParrot New Member

    Публикаций:
    0
    Регистрация:
    19 фев 2009
    Сообщения:
    163
    Y_Mur
    Сори, вы правы. Но тут еще проблема. Например, я хочу подключить манифест с красивыми кнопками, но при этом не создавать в нем связи с VC9.0 как это делает VC2008-компилятор. У меня получилось это в одном случае. Компилим проект, манифест включаем. Потом редактируем файл манифеста в папке Release/Debug на свой, в IDE жмем Build. Тогда линкер подключает нормальный файл манифеста. Если указать самому этот файл, то линкер будет писать чушь вроде - Can't parse manifest file. Мб я не до конца разобрался с манифестами, но только так получилось включить нормальный файл манифеста.

    Нормальный файл манифеста это вот такой
    Код (Text):
    1. <?xml version='1.0' encoding='UTF-8' standalone='yes'?>
    2. <assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
    3.   <dependency>
    4.     <dependentAssembly>
    5.       <assemblyIdentity type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*' />
    6.     </dependentAssembly>
    7.   </dependency>
    8. </assembly>
     
  3. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    BlackParrot
    Достаточно отключить генерацию манифеста в свойствах линкера и включить манифест "для кнопочек" в поле инструмент манифеста -> вход и выход -> дополнительные файлы манифеста (напрмер в виде файла manifest.xml, лежащего среди других файлов проекта). У меня MSVC 9 express этот вариант нормально собирается и содержит только нужную часть манифеста. Сейчас подствил приведённый тобой манифест (у меня заголовок понавороченне был) - всё тоже сработало.
     
  4. lomerok

    lomerok New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    60
    О ребят , а как провернуть тоже самое но уже в Borland C++ 6?
    ато компилю этот код :
    Код (Text):
    1. //---------------------------------------------------------------------------
    2.  
    3. #include <vcl.h>
    4. #pragma hdrstop
    5.  
    6. #include "Unit1.h"
    7. //---------------------------------------------------------------------------
    8. #pragma package(smart_init)
    9. #pragma resource "*.dfm"
    10. TForm1 *Form1;
    11. //---------------------------------------------------------------------------
    12. __fastcall TForm1::TForm1(TComponent* Owner)
    13.         : TForm(Owner)
    14. {
    15. }
    16. //---------------------------------------------------------------------------
    17.  
    18. void __fastcall TForm1::Button1Click(TObject *Sender)
    19. {
    20.  MessageBox(0,"Medved","Preved",0);
    21. }
    22. //---------------------------------------------------------------------------
    и прога врезультате весит 444Кб. этоже маразм,это при выключеном RTL и Runtime Packages...почему так жирно?шо сделать для похудания?
     
  5. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    lomerok
    Смог выключить rtl при использовании vcl? Однако.
     
  6. lomerok

    lomerok New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    60
    да смог=)и работает наура ,вот только размер устрашающь...
     
  7. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    vcl без rtl работать не может в принципе. А то что отключил runtime packages, так они теперь линкуются статически, отсюда и размер.
     
  8. lomerok

    lomerok New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    60
    вот смотри сам, http://s15.radikal.ru/i188/0910/35/1d91a33d358a.jpg снял галочку и всё прекрасно работает....

    Выходит что размер нельзя уменьшить?никаким образом?может добавить в линкер опции какиенить,прагмы,так как вы провернули с вижуал си++ ... просто прога реально должна быть меньше,ну или подскажите начём создавать гуи чтоб потом его какнибудь использовать... я нуб , поподробней если можно пожалуйста...
     
  9. reversecode

    reversecode Guest

    Публикаций:
    0
    упаковщиковм upx упакуй exe файл
    и будет тебе в 6 раз меньше
     
  10. lomerok

    lomerok New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    60
    даже при upx размер получается большим...
     
  11. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    lomerok
    Не пользуй VCL с RTL и будет маленький размер. Можешь поискать мою древнюю тему, я получал 5 кб.
     
  12. lomerok

    lomerok New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    60
    ребят решил перейти на виждуал студию, сделал так как говорит товарищь perdimonokl тобиш
    и вот что вышло
    Код (Text):
    1. 1>------ Build started: Project: test12, Configuration: Debug Win32 ------
    2. 1>Compiling...
    3. 1>cl : Command line error D8016 : '/MT' and '/clr:pure' command-line options are incompatible
    4. 1>Build log was saved at "file://c:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\test12\test12\Debug\BuildLog.htm"
    5. 1>test12 - 1 error(s), 0 warning(s)
    6. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    а задача в том чтоб как можно меньше сделать прогу самцу и чтоб она работала на других компах без студии...
     
  13. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.552
    Адрес:
    Russia
    /clr:pure выключи. Common Language Runtime support В генеральный свойствах проекта.
    И включи релиз версию раз используешь /MT , то есть отруби генерацию дебаг символов и все что связанное с дебагом. Ну и конечно Ignore all default library если у тебя проект не crt , и подключи нужные либы ручками.
     
  14. CreatorCray

    CreatorCray Member

    Публикаций:
    0
    Регистрация:
    5 авг 2006
    Сообщения:
    201
    Зачем глупости пишешь?
     
  15. KeSqueer

    KeSqueer Сергей

    Публикаций:
    0
    Регистрация:
    19 июл 2007
    Сообщения:
    1.183
    Адрес:
    Москва
    Проект ATL скомпиленный в релизной версией с оптимизацией по размеру компилятором Intel C++ 11 у меня получился больше чем дебажный проект от компилятора microsoft. Посмотрел что он намутил - он разинлайнил большинство методов, даже те, в которых были вложенные циклы (вложенность порядка 2, 3). Тоже не считаю это глупостью.
     
  16. lomerok

    lomerok New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    60
    ну вот пожалуйсто выключаю /clr:pure и тогда наинается страшное
    Код (Text):
    1. 1>------ Build started: Project: test12, Configuration: Debug Win32 ------
    2. 1>Compiling...
    3. 1>stdafx.cpp
    4. 1>Compiling...
    5. 1>test12.cpp
    6. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(6) : error C2871: 'System' : a namespace with this name does not exist
    7. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(7) : error C2653: 'System' : is not a class or namespace name
    8. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(7) : error C2871: 'ComponentModel' : a namespace with this name does not exist
    9. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(8) : error C2653: 'System' : is not a class or namespace name
    10. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(8) : error C2871: 'Collections' : a namespace with this name does not exist
    11. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(9) : error C2653: 'System' : is not a class or namespace name
    12. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(9) : error C2871: 'Forms' : a namespace with this name does not exist
    13. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(10) : error C2653: 'System' : is not a class or namespace name
    14. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(10) : error C2871: 'Data' : a namespace with this name does not exist
    15. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(11) : error C2653: 'System' : is not a class or namespace name
    16. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(11) : error C2871: 'Drawing' : a namespace with this name does not exist
    17. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(22) : error C2059: syntax error : 'public'
    18. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(22) : error C2059: syntax error : 'public'
    19. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(22) : error C2653: 'System' : is not a class or namespace name
    20. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(23) : error C2143: syntax error : missing ';' before '{'
    21. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(23) : error C2447: '{' : missing function header (old-style formal list?)
    22. 1>.\test12.cpp(8) : error C2337: 'STAThreadAttribute' : attribute not found
    23. 1>.\test12.cpp(9) : error C2065: 'array' : undeclared identifier
    24. 1>.\test12.cpp(9) : error C2653: 'System' : is not a class or namespace name
    25. 1>.\test12.cpp(9) : error C2065: 'String' : undeclared identifier
    26. 1>.\test12.cpp(9) : error C2059: syntax error : '>'
    27. 1>.\test12.cpp(10) : error C2143: syntax error : missing ';' before '{'
    28. 1>.\test12.cpp(10) : error C2447: '{' : missing function header (old-style formal list?)
    29. 1>AssemblyInfo.cpp
    30. 1>.\AssemblyInfo.cpp(3) : error C2871: 'System' : a namespace with this name does not exist
    31. 1>.\AssemblyInfo.cpp(4) : error C2653: 'System' : is not a class or namespace name
    32. 1>.\AssemblyInfo.cpp(4) : error C2871: 'Reflection' : a namespace with this name does not exist
    33. 1>.\AssemblyInfo.cpp(5) : error C2653: 'System' : is not a class or namespace name
    34. 1>.\AssemblyInfo.cpp(5) : error C2871: 'CompilerServices' : a namespace with this name does not exist
    35. 1>.\AssemblyInfo.cpp(6) : error C2653: 'System' : is not a class or namespace name
    36. 1>.\AssemblyInfo.cpp(6) : error C2871: 'InteropServices' : a namespace with this name does not exist
    37. 1>.\AssemblyInfo.cpp(7) : error C2653: 'System' : is not a class or namespace name
    38. 1>.\AssemblyInfo.cpp(7) : error C2871: 'Permissions' : a namespace with this name does not exist
    39. 1>.\AssemblyInfo.cpp(14) : error C2337: 'AssemblyTitleAttribute' : attribute not found
    40. 1>.\AssemblyInfo.cpp(15) : error C2337: 'AssemblyDescriptionAttribute' : attribute not found
    41. 1>.\AssemblyInfo.cpp(16) : error C2337: 'AssemblyConfigurationAttribute' : attribute not found
    42. 1>.\AssemblyInfo.cpp(17) : error C2337: 'AssemblyCompanyAttribute' : attribute not found
    43. 1>.\AssemblyInfo.cpp(18) : error C2337: 'AssemblyProductAttribute' : attribute not found
    44. 1>.\AssemblyInfo.cpp(19) : error C2337: 'AssemblyCopyrightAttribute' : attribute not found
    45. 1>.\AssemblyInfo.cpp(20) : error C2337: 'AssemblyTrademarkAttribute' : attribute not found
    46. 1>.\AssemblyInfo.cpp(21) : error C2337: 'AssemblyCultureAttribute' : attribute not found
    47. 1>.\AssemblyInfo.cpp(34) : error C2337: 'AssemblyVersionAttribute' : attribute not found
    48. 1>.\AssemblyInfo.cpp(36) : error C2337: 'ComVisible' : attribute not found
    49. 1>.\AssemblyInfo.cpp(38) : error C2337: 'CLSCompliantAttribute' : attribute not found
    50. 1>.\AssemblyInfo.cpp(40) : error C2337: 'SecurityPermission' : attribute not found
    51. 1>.\AssemblyInfo.cpp(40) : error C2653: 'SecurityAction' : is not a class or namespace name
    52. 1>.\AssemblyInfo.cpp(40) : error C2065: 'RequestMinimum' : undeclared identifier
    53. 1>        missing quotes ("") around 'RequestMinimum'?
    54. 1>Generating Code...
    55. 1>Build log was saved at "file://c:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\test12\test12\Debug\BuildLog.htm"
    56. 1>test12 - 46 error(s), 0 warning(s)
    57. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
     
  17. lomerok

    lomerok New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    60
    или даже так
    Код (Text):
    1. 1>------ Build started: Project: test12, Configuration: Release Win32 ------
    2. 1>Compiling...
    3. 1>test12.cpp
    4. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(6) : error C2871: 'System' : a namespace with this name does not exist
    5. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(7) : error C2653: 'System' : is not a class or namespace name
    6. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(7) : error C2871: 'ComponentModel' : a namespace with this name does not exist
    7. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(8) : error C2653: 'System' : is not a class or namespace name
    8. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(8) : error C2871: 'Collections' : a namespace with this name does not exist
    9. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(9) : error C2653: 'System' : is not a class or namespace name
    10. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(9) : error C2871: 'Forms' : a namespace with this name does not exist
    11. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(10) : error C2653: 'System' : is not a class or namespace name
    12. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(10) : error C2871: 'Data' : a namespace with this name does not exist
    13. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(11) : error C2653: 'System' : is not a class or namespace name
    14. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(11) : error C2871: 'Drawing' : a namespace with this name does not exist
    15. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(22) : error C2059: syntax error : 'public'
    16. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(22) : error C2059: syntax error : 'public'
    17. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(22) : error C2653: 'System' : is not a class or namespace name
    18. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(23) : error C2143: syntax error : missing ';' before '{'
    19. 1>c:\documents and settings\admin\мои документы\visual studio 2008\projects\test12\test12\Form1.h(23) : error C2447: '{' : missing function header (old-style formal list?)
    20. 1>.\test12.cpp(8) : error C2337: 'STAThreadAttribute' : attribute not found
    21. 1>.\test12.cpp(9) : error C2065: 'array' : undeclared identifier
    22. 1>.\test12.cpp(9) : error C2653: 'System' : is not a class or namespace name
    23. 1>.\test12.cpp(9) : error C2065: 'String' : undeclared identifier
    24. 1>.\test12.cpp(9) : error C2059: syntax error : '>'
    25. 1>.\test12.cpp(10) : error C2143: syntax error : missing ';' before '{'
    26. 1>.\test12.cpp(10) : error C2447: '{' : missing function header (old-style formal list?)
    27. 1>AssemblyInfo.cpp
    28. 1>.\AssemblyInfo.cpp(3) : error C2871: 'System' : a namespace with this name does not exist
    29. 1>.\AssemblyInfo.cpp(4) : error C2653: 'System' : is not a class or namespace name
    30. 1>.\AssemblyInfo.cpp(4) : error C2871: 'Reflection' : a namespace with this name does not exist
    31. 1>.\AssemblyInfo.cpp(5) : error C2653: 'System' : is not a class or namespace name
    32. 1>.\AssemblyInfo.cpp(5) : error C2871: 'CompilerServices' : a namespace with this name does not exist
    33. 1>.\AssemblyInfo.cpp(6) : error C2653: 'System' : is not a class or namespace name
    34. 1>.\AssemblyInfo.cpp(6) : error C2871: 'InteropServices' : a namespace with this name does not exist
    35. 1>.\AssemblyInfo.cpp(7) : error C2653: 'System' : is not a class or namespace name
    36. 1>.\AssemblyInfo.cpp(7) : error C2871: 'Permissions' : a namespace with this name does not exist
    37. 1>.\AssemblyInfo.cpp(14) : error C2337: 'AssemblyTitleAttribute' : attribute not found
    38. 1>.\AssemblyInfo.cpp(15) : error C2337: 'AssemblyDescriptionAttribute' : attribute not found
    39. 1>.\AssemblyInfo.cpp(16) : error C2337: 'AssemblyConfigurationAttribute' : attribute not found
    40. 1>.\AssemblyInfo.cpp(17) : error C2337: 'AssemblyCompanyAttribute' : attribute not found
    41. 1>.\AssemblyInfo.cpp(18) : error C2337: 'AssemblyProductAttribute' : attribute not found
    42. 1>.\AssemblyInfo.cpp(19) : error C2337: 'AssemblyCopyrightAttribute' : attribute not found
    43. 1>.\AssemblyInfo.cpp(20) : error C2337: 'AssemblyTrademarkAttribute' : attribute not found
    44. 1>.\AssemblyInfo.cpp(21) : error C2337: 'AssemblyCultureAttribute' : attribute not found
    45. 1>.\AssemblyInfo.cpp(34) : error C2337: 'AssemblyVersionAttribute' : attribute not found
    46. 1>.\AssemblyInfo.cpp(36) : error C2337: 'ComVisible' : attribute not found
    47. 1>.\AssemblyInfo.cpp(38) : error C2337: 'CLSCompliantAttribute' : attribute not found
    48. 1>.\AssemblyInfo.cpp(40) : error C2337: 'SecurityPermission' : attribute not found
    49. 1>.\AssemblyInfo.cpp(40) : error C2653: 'SecurityAction' : is not a class or namespace name
    50. 1>.\AssemblyInfo.cpp(40) : error C2065: 'RequestMinimum' : undeclared identifier
    51. 1>        missing quotes ("") around 'RequestMinimum'?
    52. 1>Build log was saved at "file://c:\Documents and Settings\Admin\Мои документы\Visual Studio 2008\Projects\test12\test12\Release\BuildLog.htm"
    53. 1>test12 - 46 error(s), 0 warning(s)
    54. ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
     
  18. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    me в шоке.
     
  19. lomerok

    lomerok New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    60
    а я в ах...е =)
     
  20. Booster

    Booster New Member

    Публикаций:
    0
    Регистрация:
    26 ноя 2004
    Сообщения:
    4.860
    lomerok
    Ну с вами то всё понятно. А я в шоке потому, что Вы не ведаете что делаете. Вы бы ещё в Java программе попытались-бы что нибудь отключить.