Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [wx,MSW] статический экзешник, не получается создать 
V
    Опции темы
bilbobagginz
Дата 24.1.2008, 20:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


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

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



Привет.
Дано:
Есть либа на C, eсть GUI на C++ (Написано под wxWidgets).
работает, запускается на платформах: Mac, Linux GTK+, MSW
используется:
Цитата

Microsoft Visual Studio 2005
Version 8.0.50727.762 (SP.050727-7600)

Конечный продукт должен поставляться в форме 1-го экзешника, без установщика, записей в registry, и каких либо вспомогательных файлов (dll и т.д. и т.п.)

Описание Проблемы:

Если собираю программу с C/C++ runtime DLL, то программа запускается только на системах с девелоперскими тулзами, или с дополнительными, но не обязательными обновлениями (то ли .NET то ли MSXML поставляется с msvcrt80.dll, и это и есть так длл-ка которая вписывается в манифест)
если запускается, то бежит корректно.

Если собираю программу с C/C++ runtime статически прилинкованной, то программа не слинковывается.
Изначально были проблемы с не найденными внешними символами, типа:
Цитата

error LNK2001: unresolved external symbol __imp__putchar

Сначала орало на free, потом поигрался стал орать на putchar().

Я согласен, что статически линковка увеличивает экзешник.
Существует также опция использования более старой среды разработки, чтобы не зависить от msvcrt80.dll, a напр. Visual Studio .NET 2003, но хотелось бы узнать есть ли у кого опыт таких сборок, и какие опции в проекте нужно указать.
При запросе выложу нужные настройки проекта.

уже прочитал сл. ссылки:
  • http://msdn2.microsoft.com/en-us/library/aa375193(VS.85).aspx
  • http://wxforum.shadonet.com/viewtopic.php?t=6357


Спасибо заранее.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
archimed7592
Дата 24.1.2008, 20:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



Я так понимаю, что нужно пересобрать используемые тобой либы(та что на C и саму wx) с указанием им тоже пользоваться статической версией RTL, после чего, по идее, всё должно успешно слинковаться.

Добавлено через 1 минуту и 31 секунду
Ктстати, уточни, нет ли у тебя в итоговой строке запуска линкера ключика /NODEFAULTLIB(или как-то так).


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
bilbobagginz
Дата 24.1.2008, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


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

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



не знаю в чем грабли, /NODEFAULTLIB: .. 
нет.
всё пересобрал, всё равно есть ошибка как указано сверху.




--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
archimed7592
Дата 24.1.2008, 23:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



bilbobagginz, ok, обычно ошибки, приведённого тобою типа сопровождаются информацией о том, откуда идёт сама ссылка(имя ф-ции) - что говорит компоновщик? Откуда идёт ссылка на putchar?


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
bilbobagginz
Дата 24.1.2008, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


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

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



из моего файла (дается имя объекта.obj, мой файл, который ее использовал )

как я понимаю он не находит внешний символ ни в одной из библиотек.
значит:
1. что-то не то с объявленной функцией.
2. не хватает библиотеки, в к-рой эта функция имеется.

я чего-то не допонимаю ?


--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
archimed7592
Дата 25.1.2008, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



bilbobagginz, можешь показать buildlog?


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
bilbobagginz
Дата 25.1.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


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

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



не могу тут, могу послать по PM.



--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
Lazin
Дата 25.1.2008, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3820
Регистрация: 11.12.2006
Где: paranoid oil empi re

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



ИМХО проблема в том как собрана библиотека wxWidgets...

Добавлено через 1 минуту и 21 секунду
Я когда собирал, исправлял ихний workspace, что-бы оно статически норм. линковалось... могу посмотреть, но только вечером...
PM MAIL Skype GTalk   Вверх
bilbobagginz
Дата 25.1.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


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

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



wxWidgets пересобирал, собрал всё статически.
Сейчас уже после тех времен дела идут шибко хорошо - не больше 5 проблем компоновки.

после рассмотрения Buildlog.htm повниматочнее заметил, что там было выражение:
/NODEFAULTLIB:msvcrt.lib

после того как убрал оное:
Код

wxbase28.lib(datetime.obj) : error LNK2001: unresolved external symbol _timezone
OLDNAMES.lib(timezone.obj) : error LNK2001: unresolved external symbol _timezone
OLDNAMES.lib(timezone.obj) : error LNK2001: unresolved external symbol __timezone


предполагаю надо пошерстить и wxWidgets на предмет /NODEFAULTLIB:<всякости>

занимаюсь этим сейчас.
надеюсь на лучшее.

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






--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
archimed7592
Дата 25.1.2008, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


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

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



bilbobagginz, может быть поможет: http://lists.wxwidgets.org/archive/wx-users/msg13706.html


--------------------
If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas.
© George Bernard Shaw
PM Jabber   Вверх
bilbobagginz
Дата 3.2.2008, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Naughtius Maximus
****


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

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



Проблема решилась 7-ым повторением одной и той же операции пересборки.
т.е. на 7-й раз получилось.
Никаких причинно-следственных умозаключений привести не могу...
Цитата

Пути MSW Неисповеданы....





--------------------
Я ещё не демон. Я только учусь.
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

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


 




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


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

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