Сообщество - Лига программистов C/C++

Лига программистов C/C++

65 постов 4 798 подписчиков

Популярные теги в сообществе:

Для лиги тупости пост... Не пучается makefile

Туплю второй день, стыдно даже публиковать под своим именем )


Нужно собрать мелкий проект под mingw (gcc.exe (MinGW.org GCC Build-2) 9.2.0), подключив билиотеку  libGFL версии 3.40 (от разрабов XnView, последняя версия, и уже не разрабатывается - но для моей мелкой задачи  её вполне хватает). Библиотека libgfl.lib находится в той же директории, что и сам компилируемый исходник.


Проблема возникает на этапе линковки.

Если тупо задать сборку из командной строки

gcc -opicinfo.exe picinfo.cpp -L . -lgfl
Все молча собирается.

А вот если все то же самое, но в два этапа, и через мэйкфайл - то результат несколько иной.


Ниже мэйкфайл с удаленными комментариями и пустыми строками (небходимые по спецификации табуляции, не переносятся в пост, поэтому заменены пробелами):

OBJS = picinfo.o
CFLAGS=
LFLAGS= -L . -lgfl
all: picinfo.exe
picinfo.exe: $(OBJS)
  g++ -o $@ $(LFLAGS) $^
%.o: %.cpp
g++ $(CFLAGS) -c $<
picinfo.o: picinfo.cpp

То почему-то на выходе получается куча неразрешенных ссылок на функции:


C:\Projects\Picinfo>make
g++ -c picinfo.cpp
g++ -o picinfo.exe -L. -lgfl picinfo.o
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x7): undefined reference to `gflLibraryExit@0'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0xca): undefined reference to `gflGetDefaultLoadParams@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x107): undefined reference to `gflLoadBitmap@16'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x12f): undefined reference to `gflGetErrorString@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x359): undefined reference to `gflBitmapHasEXIF@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x37f): undefined reference to `gflBitmapGetEXIF@8'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x4ca): undefined reference to `gflFreeEXIF@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x4db): undefined reference to `gflFreeFileInformation@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x4ec): undefined reference to `gflFreeBitmap@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x566): undefined reference to `gflSetPluginsPathname@4'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x56e): undefined reference to `gflLibraryInit@0'
c:/mingw/bin/../lib/gcc/mingw32/9.2.0/../../../../mingw32/bin/ld.exe: picinfo.o:picinfo.cpp:(.text+0x5a8): undefined reference to `gflEnableLZW@4'
collect2.exe: error: ld returned 1 exit status
makefile:10: recipe for target 'picinfo.exe' failed
make: *** [picinfo.exe] Error 1

Отчего проиходит такая печаль - ума не приложу... Что скажут аксакалы?

Показать полностью
7

Мобильная 1С и внешние компоненты

Очень надеюсь, что здесь есть люди, которые делают/сделали компоненты для мобильного приложения/клиента 1С.

Хочу сделать компоненту для мобильного приложения (Android), но не понимаю как её собрать. Пишу на C++. DLL получается и всё круто, а SO, для ARM/ARM64, при подключении на мобилке вылетает. Причем и моя, и с ИТС. И как отладить не понимаю. Собирал через Visual Studio. Тестил на своем телефоне (ARM64) и на ТСД (ARM). В процессе гугления нашёл ещё способы:
1. Собрать под Linux и, вроде как, оно будет работать
2. Собрать SO в Android Studio

Но тут уже не хватает знаний как и что делать и по итогу просто запутался. И спросить совсем не у кого(

Прошу подсказать, скинуть какой-нибудь материал для подсказки, мини-инструкцию, пример или хоть как-нибудь помочь

P.S. Пишу на Пикабу уже от отчаяния, ибо три дня гугления ничего не дают. Естественно без рейтинга

0

If() {} else {} unknow{} или троичная логика

Как-то давно пришла идея добавить троичную логику в c++ - добавить одно слово unknow в синтаксис языка и тип данных который принимает три значения - true, false, unknow.

Логические операции &&, ||, ! легко обрабатываются - https://ru.wikipedia.org/wiki/Троичная_логика

Такое вообще возможно?

Если абстрагироваться, то по одному проводу ток может течь в одну сторону, другую сторону или не быть тока) То есть можно теоретически и аппаратно реализовать

https://ru.wikipedia.org/wiki/Троичный_триггер


P.S. https://ru.wikipedia.org/wiki/Троичный_компьютер

463

SkittishBirds

Последнее время,

SkittishBirds Игры, Программирование, C++, Гифка

Друзья, как лучше сделать данное чудо на плюсах.
- формируем массив координат
- заполняем массив деревьями
- заполняем случайным образом птицами

- вертим массив вокруг собаки (?)

35

С++ с нуля

Сестра подарила 3 таких книги. Как думаете, я пойму хоть что-то, или после прочтения меня в дурку увезут?

С++ с нуля C++, Самообразование
2

Есть тут программисты на C? Что делает этот код?

Здравствуйте. Можете по строчкам расписать для совсем начинающих программистов, что за магия тут происходит? Спасибо.

char* strncat(char* dest, const char* src, size_t n) {

char* ret = dest;

while (*dest) dest++;

while (n--)

if (!(*dest++ = *src++)) return ret;

*dest = 0;

return ret;

}


char* strchr(const char* str, int c) {

while (*str != (char)c)

if (!*str++) return 0;

return (char*)str;

}


char* strcat(char* dest, const char* src) {

char* ret = dest;

while (*dest) dest++;

while (*dest++ = *src++)

;

return ret;

}

Показать полностью
3

Сортировка пузырьком или самая легкая сортировка

В данном блоге я рассмотрю самою простую сортировку, которая поможет вам понять как работают сортировки.

- Почему метод называется методом пузырьком?
- Потому что легкие элементы (наименьшие) как-бы всплывают (прижимаются к левому краю списка), а тяжелые (самые большие) как-бы оседают на дно (прижимаются к правому краю списка). Таким способ массив и сортируется, так как самые элементы будут сортироваться в порядке возрастания: от самых легких, до самых тяжелых.
Что нам понадобиться для написания сортировки пузырьком:
- Умение писать циклы
- умение свопать (переставлять местами) элементы
- Массив

Код на C++:

https://gist.github.com/l-arkadiy-l/6662668989adcf579e21aeee14d04da3


Код на Python:

https://gist.github.com/l-arkadiy-l/41dfa4a9ae96f6821512e13f64e65a25


У вас может возникнуть логичный вопрос: А почему второй for идет от i до N — i — 1?

А потому что мы за каждую итерацию вложенного фора прижимаем наибольший элемент в массиве [0, N — i — 1], сейчас поясню: В первой итерации мы рассматриваем весь массив, от 0 до N — 1. До N — 1, потому что массив нумеруется с 0 и до N — 1.


Так вот:
- Первая итерация: прижимаем к правому краю max(arr[0, N — 1])
- Вторая итерация: прижимаем к правому краю max(arr[0, N — 2])
- Третья итерация: прижимаем к правому краю max(arr[0, N — 3])
- Четвертая итерация: прижимаем к правому краю max(arr[0, N — 4])
- и так далее...

В завершении блога хочу сказать, что этот алгоритм работает за квадрат O(n * n) — это медленно, так что в следующих блогах я рассмотрю более быстрые алгоритмы для сортировки.



Я на codeforces: https://codeforces.com/profile/Fin_ger

Показать полностью

Книга по C++: От нуба до про

Добрый день, Пикапрограммисты. Давно вынашиваю идею написать книгу об изучении C++, с точки зрения новичка без опыта и соответствующего образования. По большому счёту это пост о поиске ментора. Дело в том, что уже не раз пытался начать учить, каждый раз заново, но упирался в простые вопросы, ответы на которые ищутся может и не так долго, но более глубокого объяснения найти не получится. Например о строках на русском языке, почему надо писать сет_локейт, а почему g++ и без этого работает, а почему сетлокейтов несколько, а какой нужен, а где, а почему? и т.п., на что ответы найти почти невозможно. Я к тому, что я пытаюсь понять более глубоко, но постоянно терзают сомнения, а нужно ли это? И многие ответят "нет", но у меня на подсознании обратный ответ, ведь такие мелочи могут всплыть в разных не очень приятных местах, полагаю. Прошу не писать "кури мануалы"/"учи либу", вы серьёздно? Не, это может и очень дельный совет, но не новичку, я пробовал, и... куда читать? что читать? пока читал, забыл зачем читал..

В общем ну смог я написать консольный калькулятор, даже выводит подробное решение квадратных уравнений. Решил раскидать функции по разным файлам, чтоб в основном только Мэйн остался, и встрял, 2 дня гуглинга не дали результатов, и куда идти? И спросить не у кого. Сейчас снова заброшу на некоторое время, потом разберусь и с этим вопросом... но разве это обучение? Так и совсем забить не долго, потому, хочется найти человека, что может выделить хотя бы пару часов в неделю на ответы на накопившиеся вопросы, я не даyh, умею гуглить и задавать правильные вопросы, но в незнакомой сфере это сложно и не всегда видимо получается.

И так, в планах начать всё снова заново, основываясь на пути Метанита, но расширенно, отвечая на кучу мелких вопросов, отсекая лишнее. Конечная цель, я не знаю, вы профессионалы, что является высшей точкой владения C++? Своя ОС? Предлагайте, если не боитесь. Я же настроен добить этот язык, но без помощи это займёт, даже боюсь представить, сильно больше времени, если никто не откликнется. Кто готов стать соавтором книги, пишите) 554cpp@gmail.com
Ну а если вы мимокрокодил, то кидайте тапки и советы на годные источники инфы для изучения) ссаные курсы не советовать)

Показать полностью
Отличная работа, все прочитано!