Как разрешить неопределенные символы, такие как функции, определенные внутри другой библиотекиC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как разрешить неопределенные символы, такие как функции, определенные внутри другой библиотеки

Сообщение Anonymous »

У меня есть две библиотеки liba.so и libb.so, где libb.so связывает liba.so. Библиотеки собираются успешно, но когда я делаю nm libb.so, функции библиотеки liba.so отображаются как U(неопределенный символ). Как это исправить, превратив U в T .
lib_a.cpp
extern "C" void printa() {

}

build command
gcc -shared -fPIC -o liba.so ./lib_a.cpp

lib_b.cpp
extern "C" void printa();

void printb() {
printa();
}

build command
gcc -shared -fPIC -o libb.so ./lib_b.cpp -L../lib_a -la

nm liba.so
0000000000001104 T printa

nm libb.so
U printa


Подробнее здесь: https://stackoverflow.com/questions/798 ... r-libraray
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»