Собираю приложение, написанное на С++11, использующее библиотеку GTK-3.0, с помощью утилиты g++. По некоторым причинам нужно сначала собрать *.o-файлы, что делается успешно с помощью команды вроде этой (команда применяется отдельно к каждому сорцу):
g++ -w -std=c++11 -c <src file name> -o .\obj\<src file name>.o <вывод команды 'pkg-config --cflags gtk+-3.0'> -I<path to sources>
После выполнения команды получаю в каталоге .\obj список всех своих объектных файлов. Далее нужно слинковать всё это в исполняемый файл. Делаю так:
g++ <вывод команды 'pkg-config --libs gtk+-3.0'> -o ".\bin\myapp.exe" <list of *.o files>
Вот тут и получается ошибка. Выводит следующее:
c:/mingw/bin/../lib/gcc/mingw32/4.8.1/../../../libmingw32.a(main.o):main.c:(.text.startup+0xa7): undefined reference to `WinMain@16'
collect2.exe: error: ld returned 1 exit status
Поиск по гуглу дал 100500 похожих вопросов и ни одного решения, которое работало бы у меня.
UPD. main() у меня такой:
int main(int argc, char* argv[]) {
//...
}
и я не хотел бы его менять на WinMain или что-то еще. До этого я успешно собирал и запускал приложение с помощью MSVS 2012, так что знаю, что как-то решить вопрос можно. ;) только вот как...
UPD 2. Выводы обоих pkg-config:
pkg-config gtk+-3.0 --libs
-LC:/libs/GTK/lib -lgtk-3 -lgdk-3 -lgdi32 -limm32 -lshell32 -lole32 -Wl,-luuid -lpangocairo-1.0 -lpangoft2-1.0 -lfreetype -lfontconfig -lpangowin32-1.0 -lgdi32 -lpango-1.0 -lm -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lintl
pkg-config --cflags gtk+-3.0
-mms-bitfields -IC:/libs/GTK/include/gtk-3.0 -IC:/libs/GTK/include/cairo -IC:/libs/GTK/include/pango-1.0 -IC:/libs/GTK/include/atk-1.0 -IC:/libs/GTK/include/cairo -IC:/libs/GTK/include/pixman-1 -IC:/libs/GTK/include -IC:/libs/GTK/include/freetype2 -IC:/libs/GTK/include -IC:/libs/GTK/include/libpng15 -IC:/libs/GTK/include/gdk-pixbuf-2.0 -IC:/libs/GTK/include/libpng15 -IC:/libs/GTK/include/glib-2.0 -IC:/libs/GTK/lib/glib-2.0/include