Как Вы на самом деле пользуетесь библиотекой C?

Вручную выполнение изменений SQL и дампа/перезагрузки является оба опциями, но можно также хотеть проверить некоторые пакеты эволюции схемы для Django. Самые зрелые опции django-эволюция и Юг .

РЕДАКТИРОВАНИЕ : И эй, здесь прибывает dmigrations.

ОБНОВЛЕНИЕ : Так как этот ответ был первоначально записан, django-эволюция и , dmigrations и прекратил активную разработку и , Юг стал фактическим стандартом для миграции схемы в Django. Части Юга могут даже быть интегрированы в Django в рамках следующего выпуска или два.

ОБНОВЛЕНИЕ : платформа миграций схемы на основе Юга (и созданный Andrew Godwin, автором Юга) включена в Django 1.7 +.

7
задан unknown 17 November 2009 в 14:22
поделиться

7 ответов

Делаете это под окнами (предположим, что вы пользуетесь Visual Studio)

  • После распаковки добавьте каталоги include библиотеки в настройки ваших проектов (Проект -> Свойства -> C / C ++ -> Дополнительные каталоги включения)

  • Сделайте то же самое для каталога библиотек (Проект -> Свойства -> Компоновщик -> Дополнительные каталоги библиотек)

  • Укажите имя библиотеки в вашем Linker Input: Project -> Properties -> Linker -> Input -> Additional Dependencies

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

Я не рекомендую добавлять каталоги, указанные выше, в глобальные настройки в Visual Studio (Инструменты - >

8
ответ дан 6 December 2019 в 06:24
поделиться

Вы должны линковать .lib или что-то подобное, то есть добавить «.lib» в библиотеки, читаемые компоновщиком. По крайней мере, так это работает в Linux ... Я давно не работал с Windows.

.lib содержит символы для данных / функций внутри разделяемой библиотеки .dll.

3
ответ дан 6 December 2019 в 06:24
поделиться

Вот краткое руководство по тому, что происходит, когда вы компилируете и строите базовый проект C:

  • На первом этапе компилируются все ваши исходные файлы - это берет исходные файлы, которые вы написали, и переводит их в так называемые объектные файлы . На этом этапе компилятору необходимо знать объявление всех функций, которые вы используете в своем коде, даже во внешних библиотеках, поэтому вам нужно использовать #include для включения файлов заголовков любых библиотек, которые вы используете. Это также означает, что вам необходимо сообщить компилятору расположение этих файлов заголовков. С GCC вы можете использовать командную строку -I для ввода каталогов, в которых будет производиться поиск файлов заголовков.

  • Следующим этапом является объединение всех объектных файлов в один исполняемый файл . На этом этапе компоновщик должен разрешить вызовы внешних библиотек. Это означает, что вам нужна библиотека в объектной форме. Большинство библиотек дадут вам инструкции о том, как его создать, или могут предоставить его в готовом виде. В Linux файл библиотеки часто представляет собой файл .a или .so , хотя это может быть просто .o . Опять же, вы можете передать местоположение объектного файла библиотеки в GCC с параметром -L.

Таким образом, ваша командная строка будет выглядеть так:

gcc myProg.c -I/path/to/libpng/include -L/path/to/libpng/lib -lpng -o myProg.exe

(Обратите внимание, что при использовании командной строки -l GCC автоматически добавляет lib в начало библиотеки, так что -lpng приводит к связыванию libpng.a .)

Надеюсь, это поможет.

Это означает, что вам нужна библиотека в объектной форме. Большинство библиотек дадут вам инструкции о том, как его создать, или могут предоставить его в готовом виде. Под Linux файл библиотеки часто представляет собой файл .a или .so , хотя это может быть просто файл .o . Опять же, вы можете передать местоположение объектного файла библиотеки в GCC с параметром -L.

Таким образом, ваша командная строка будет выглядеть так:

gcc myProg.c -I/path/to/libpng/include -L/path/to/libpng/lib -lpng -o myProg.exe

(Обратите внимание, что при использовании командной строки -l GCC автоматически добавляет lib в начало библиотеки, так что -lpng приводит к связыванию libpng.a .)

Надеюсь, это поможет.

Это означает, что вам нужна библиотека в объектной форме. Большинство библиотек дадут вам инструкции о том, как его создать, или могут предоставить его в готовом виде. Под Linux файл библиотеки часто представляет собой файл .a или .so , хотя это может быть просто файл .o . Опять же, вы можете передать местоположение объектного файла библиотеки в GCC с параметром -L.

Таким образом, ваша командная строка будет выглядеть так:

gcc myProg.c -I/path/to/libpng/include -L/path/to/libpng/lib -lpng -o myProg.exe

(Обратите внимание, что при использовании командной строки -l GCC автоматически добавляет lib в начало библиотеки, поэтому -lpng приводит к связыванию libpng.a .)

Надеюсь, это поможет.

В Linux файл библиотеки часто представляет собой файл .a или .so , хотя это может быть просто .o . Опять же, вы можете передать местоположение объектного файла библиотеки в GCC с параметром -L.

Таким образом, ваша командная строка будет выглядеть так:

gcc myProg.c -I/path/to/libpng/include -L/path/to/libpng/lib -lpng -o myProg.exe

(Обратите внимание, что при использовании командной строки -l GCC автоматически добавляет lib в начало библиотеки, так что -lpng приводит к связыванию libpng.a .)

Надеюсь, это поможет.

Под Linux файл библиотеки часто представляет собой файл .a или .so , хотя это может быть просто файл .o . Опять же, вы можете передать местоположение объектного файла библиотеки в GCC с параметром -L.

Таким образом, ваша командная строка будет выглядеть так:

gcc myProg.c -I/path/to/libpng/include -L/path/to/libpng/lib -lpng -o myProg.exe

(Обратите внимание, что при использовании командной строки -l GCC автоматически добавляет lib в начало библиотеки, поэтому -lpng приводит к связыванию libpng.a .)

Надеюсь, это поможет.

13
ответ дан 6 December 2019 в 06:24
поделиться

Это зависит от библиотеки. Например, некоторые библиотеки содержат предварительно скомпилированные двоичные файлы (например, dll), а другие вам необходимо скомпилировать их самостоятельно. Вам лучше посмотреть документацию к библиотеке.

В основном, для компиляции вы должны:

(1) указать местоположение файла библиотеки (.h) в пути включения компилятора,

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

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

2
ответ дан 6 December 2019 в 06:24
поделиться

Есть два типа библиотек: статические и динамические (или совместно используемые).

Статические библиотеки имеют объектный формат, и вы связываете их непосредственно в своем приложении.

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

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

Некоторые «библиотеки» предназначены только для заголовков, и вам не нужно ничего делать, кроме их включения. Некоторые состоят из заголовочных и исходных файлов.

1
ответ дан 6 December 2019 в 06:24
поделиться

Также,
вы можете просмотреть поддержку динамической загрузки на разных языках и на разных платформы.
Эта поддержка очень удобна в случаях, когда вы хотите использовать библиотеку по желанию и не хотите, чтобы ваша программа завершилась ошибкой, если эта библиотека недоступна.

0
ответ дан 6 December 2019 в 06:24
поделиться

Когда вы компилируете, предполагая, что у вас есть библиотеки и заголовки в той же папке, что и исходные тексты, которые вы компилируете, вам нужно добавить в вашу компиляцию строку -L. -I. -lpng . -L сообщает компоновщику, где искать библиотеку, -I сообщает компилятору, где искать заголовки, а -lpng указывает компоновщику связываться с библиотекой png.

[Изменить] Обычные проекты будут иметь своего рода иерархию, в которой заголовки находятся в папке / include , а сторонние библиотеки - в папке / libs . В этом случае вы должны поместить -I ./include и -L ./libs вместо -I. и -L.

[Edit2] Большинство проектов используют make-файл для компиляции из командной строки. Вы можете скомпилировать вручную только небольшое количество файлов, после этого все становится очень беспокойно

1
ответ дан 6 December 2019 в 06:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: