MyTetra Share
Делитесь знаниями!
Борьба с ошибкой линковки "In function ... undefined reference to" при сборке с заранее скомпиленными библиотеками
Время создания: 06.11.2008 13:53
Текстовые метки: программирование, язык, c++
Раздел: Компьютер - Программирование - Язык C++ (Си++)
Запись: xintrea/mytetra_syncro/master/base/0000000278/text.html на raw.github.com

Имеем проект, в который, в частности, включены файлы

com_port.h

libcomport.a

sas_iface.h

libsasiface.a

В *.a архивах лежат скомпиленные в C++ библиотеки. Если при линковке командой

g++ -L/usr/X11R6/lib -o billsys.o ... timelib.o libbill.a ... libcomport.a libsasiface.a -lGL ... -lusb

Получаются ошибки вида

libsasiface.a(sas_iface.o): In function `CSasIface::Init(ComPort_t, ComPortDevice_t)':

sas_iface.cpp undefined reference to `CComPort::CComPort()'

sas_iface.cpp undefined reference to `CComPort::GetComDevice(ComPortDevice_t, ComPort_t)'

sas_iface.cpp undefined reference to `CComPort::~CComPort()'

sas_iface.cpp undefined reference to `CComPort::~CComPort()'

collect2: ld returned 1 exit status

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

libcomport.a libsasiface.a

надо прописать

libsasiface.a libcomport.a

и линковка произойдет без ошибок.

Так же в этом разделе:
 
MyTetra Share v.0.62
Яндекс индекс цитирования