MinGW. как использовать статические и динамические ссылки как - PullRequest
1 голос
/ 12 октября 2010

позволяет создать простейшее приложение:

alt text

alt text

alt text

alt text

Результат: alt text

ки. оно работает. давайте добавим сюда SDL с динамическим связыванием по умолчанию!

alt text

alt text

alt text

alt text

результат:

alt text работает отлично. на stdout.txt мы видим "puchuu"

давайте немного изменим наш make-файл. просто сгруппируйте объектные файлы 2 в статическую библиотеку:

alt text

результат:

alt text

Кто виноват? Я или разработчики Mingw? Ясно, чтобы отправить его на баг-трекер?

1 Ответ

3 голосов
/ 12 октября 2010

Мингв не виноват. С помощью компоновщика (GNU) статические библиотеки должны быть перечислены в обратном порядке зависимостей.

g++ -o program.exe libpuchuu.a -lSDL не будет работать, если что-то в libpuchuu.a зависит от чего-то в libSDL.

Это должно быть g++ -o program.exe -lSDL libpuchuu.a

Если у вас есть циклическая зависимость, вам даже нужно перечислить их дважды. Рассмотрим, например, libfoo.a зависит от содержимого в libbar.a, а libbar.a зависит от чего-то в libfoo.a. Вам нужно будет сделать: g++ -o fooprogram libbar.a libfoo.a libbar.a

...