Примеры
Библиотека: print.hpp print.cpp
Основная программа: test-print.cpp
Компиляция в GCC (Unix)
Статическая библиотека
библиотека:
g++ -D LIBPRINT_STATIC -c print.cpp
ar cr libprint.a print.o
программа:
g++
-D LIBPRINT_STATIC
-I. -L. -otest test-print.cpp -lprint
Вместо точек (текущий каталог) подставляйте правильные пути в заголовкам (-I) и библиотекам (-L).
Динамическая библиотека
библиотека:
g++ -shared -fPIC -o libprint.so print.cpp
программа:
g++ -I. -L. -otest test-print.cpp -lprint
Вместо точек (текущий каталог) подставляйте правильные пути в заголовкам (-I) и библиотекам (-L).
Если при запуске программы библиотека будет лежать не в стандартном каталоге, собирайте программу так:
g++ -I. -L. -Wl,-rpath . -otest test-print.cpp -lprint
Вместо точки (текущий каталог) в параметре -rpath подставляйте правильный путь к библиотеке для запуска.
Все пути могут быть относительными.
Компиляция в MS Visual C++ (версия 2010)
Обратите внимание на следующие настройки в проектах.
libprint-static
C/C++ > Preprocessor > Preprocessor Definitions : добавлено LIBPRINT_STATIC (для всех конфигураций)
libprint-shared
C/C++ > Preprocessor > Preprocessor Definitions : добавлено LIBPRINT_SHARED (для всех конфигураций)
test-static
C/C++ > Preprocessor > Preprocessor Definitions : добавлено LIBPRINT_STATIC (для всех конфигураций)
C/C++ > General > Additional Include Directories – каталоги заголовков (для всех конфигураций)
Linker > General > Additional Library Directories – каталоги библиотек (отдельно для каждой конфигурации)
Linker > Input > Additional Dependencies – lib-файлы библиотек (отдельно для каждой конфигурации)
test-shared
C/C++ > General > Additional Include Directories – каталоги заголовков (для всех конфигураций)
Linker > General > Additional Library Directories – каталоги библиотек (отдельно для каждой конфигурации)
Linker > Input > Additional Dependencies – lib-файлы библиотек (отдельно для каждой конфигурации)
Если файлы, необходимые программе для запуска (в т.ч. библиотеки) лежат в отдельной папке, то для запуска из-под MSVC пропишите путь к папке в параметре
Debugging > Working Directory
Этот параметр иногда может сбрасываться, особенно при переносе проекта между машинами.
Все пути могут быть относительными.
Также будьте внимательны с подключением стандартной библиотеки, она должна быть подключена одинаково в вашей библиотеке и в вашей программе для этого проверяйте параметры
C/C++ > Code Generation > Runtime Library
General > Use of MFC
В некоторых случаях мешает несоответствие кодировок, параметр
General > Character Set