Нужна помощь.
После того, как прочел первый урок: http://fox-toolkit.by.ru/tut1.html - скачал листинги программы: mywindow.cpp, mywindow.h. И попытался скомпилировать это дело с помощью Dev-C++. У меня возникло множество ошибок такого типа: [Linker error] undefined reference to `FX::FXMetaClass::search(unsigned) const' [Linker error] undefined reference to `FX::FXMainWindow::handle(FX::FXObject*, unsigned, void*)' ... C:\Program Files\Dev-Cpp\Projects\Test\12\Makefile.win [Build Error] [Project2.exe] Error 1 Был бы очень благодарен, если бы кто-то подсказал, в чём тут может быть проблема. |
А правильно ли прописаны пути к библиотекам?
Для Linux это указано внизу страницы Код:
-L$FOX_PREFIX/lib -L/usr/X11R6/lib Добавлено: Конкретно, вот эта часть Код:
-L$FOX_PREFIX/lib |
В общем-то сабж.
Есть чудесные строчки кода по уменьшению выходного файла при компиляции в С++. Без никаких нареканий компилятся в Visual C++ из VS6 Код:
#pragma comment(linker,"/MERGE:.rdata=.text") Почитав MSDN Цитата:
После этого удаётся их скормить и новейшему компилятору от МикроСофт. Тем не менее, он их воспринимает с предупреждениями Код:
main.obj : warning LNK4229: invalid directive '/FILEALIGN:512' encountered; ignored Сейчас не проверял, но помнится компилятор 2003го тоже адекватно воспринимал строчки кода, как и 1998 и даёт ехе несколько меньше. Насчёт 2005го не знаю. В новой редакции MSDN замены им не было найдено. Какие необходимо дать эквиваленты директивы взамен '/FILEALIGN:512' и '/IGNORE:4078'? Или есть строчки поколения 2008, которые фантастически уменьшают размер проги? Указанные выше строки времён 1998го года. |
Покопался в MSDN 6.0 т.е 1998 г. - там вообще в справке нету упоминаний о директивах /IGNORE и /FILEALIGN (хотел посмотреть что они делают) Недокументированные какие-то директивы :)
Ты указываешь конфигурацию рилиз или дебаг? Попробуй билдить на конфе рилиз. Build -> Configuration Manager : Release Код:
#include <windows.h> Вот эта программа весит 3584. Много? Если еще твои строчки добавить получается ~3000 . Project -> Properties -> Linker: Manifest File Generate Manifest -> No Generate Debug Info -> No В результате 2048 при компиле в 6-ой весит 1536 |
mrcnn, спасибо за ответ.
Конечно же сиё работает только при компиляции в RELEASE. В DEBUG даже VC++ 6 будет ругаться. Строчки почерпнул с этой статьи. Это ведь частный случай, программа на одну строчку. И хотелось разобраться что б строчки и современным компилятором воспринимались. Не документированные, что ж значит и в современном компиляторе есть аналоги. Как видно функциональность от этих строк вовсе не зависит, так что не стоит боятся о труднопереносимости кода между компиляторами. Кстати мой мин вариант 1024 байта на VC++ 6, кстати кто хочет ещё меньше можно использовать /opt:nowin98, уменьшив правда скорость загрузки в память, что на современных компах не заметно, но опять же в VC++ 6 работает, а в VC++ 2008 игнорируется. Меньше уже наверное только ассемблеру под силу. Слышал что рабочий ехе можно скомпилить в 34 байта! |
Я об этих строчках узнал отсюда http://uinc.ru/articles/28/ Date: 15/01/2002 Там прога не на одну строчку. В проге для DOS - Размер заголовка 1Ch. Так что 34 байта, наверное, реально получить. Windows в принципе должна поддерживать программы для DOS. В формате PE (PortableExecutables) подразумевается, что размер заголовка составит f8h со смещения 40h (Итого 312 - это минимум) Смещение 40h для совместимости DOS приложений. Таблица секций размера 2Ch (44) Итого 356. Ниже уже вряд ли.. |
|
Время: 05:47. |
Время: 05:47.
© OSzone.net 2001-