Порядок связывания флагов с помощью QMAKE в файле QTCreator .pro

я собираюсь

[...]main.cpp:9: ошибка: неопределенная ссылка [...]

Я уже знаю причину, но я не могу решить ее с помощью флагов QMAKE_.

Мне нужно установить флаг -I в компоновке после флага -L и перед флагом -o, вот так (я протестировал сделанный вручную Makefile, и все в порядке):

-L ./lib -lm [... другие библиотеки ...] -I ./include -o ./bin/program

Но установка -I в QMAKE_LFLAGS, флаг -I ставится в начале команды g++.


person csguth    schedule 30.04.2014    source источник
comment
Флаги компилятора (включая флаги препроцессора, такие как -I) традиционно идут первыми. Библиотеки ссылок во многих случаях должны быть последними (или, по крайней мере, позади любых исходных/объектных файлов).   -  person Some programmer dude    schedule 30.04.2014
comment
Есть ли способ заставить флаг -I идти после -L и перед -o при связывании?   -  person csguth    schedule 30.04.2014
comment
Наверное, нет, но зачем вам это? За исключением линкерных библиотек порядок действительно не имеет значения. Будет легче сказать, что не так, если вы покажете сообщение об ошибке полное и неотредактированное. Скорее всего, вам не хватает объектного файла или библиотеки, потому что часть сообщения об ошибке, которую вы показываете, является ошибкой компоновщика, поэтому флаги компилятора C++ или препроцессора в любом случае не имеют значения.   -  person Some programmer dude    schedule 30.04.2014
comment
Я создал тестовую среду. Я скомпилировал простую математическую библиотеку в стандарте C для вычисления максимальных и минимальных функций: /a> * .h файл: pastebin.com/NwnXRnF6 Makefile для компиляции моей библиотеки: pastebin.com/117u7K8N Теперь у меня есть файлы .a и .h, и я хочу связать их в проекте C++ внутри QT. Мой проект QT представляет собой простую функцию Hello World, которая вызывает функцию min или max, которую я объявил в своей статической библиотеке. И я просто не могу связать это.. ошибка:   -  person csguth    schedule 30.04.2014
comment
И как выглядит ваш файл .pro? Или, по крайней мере, строки, специфичные для компоновщика?   -  person Some programmer dude    schedule 30.04.2014
comment
Файл .pro: pastebin.com/6YQYx7TF   -  person csguth    schedule 30.04.2014


Ответы (1)


Аналогичное решение: Ссылка на функции C в статической библиотеке из C++

Чтобы создать экземпляр C lib из C++, вам нужно окружить заголовки c extern "C" { }

person csguth    schedule 30.04.2014