Получение ошибки компоновщика между двумя .so файлами в linux - PullRequest
0 голосов
/ 23 сентября 2019

У меня есть два файла .so, и я пытаюсь вызвать параметризованный конструктор из одного .so в другой.И я получаю ошибку компоновщика.Вот кусок кода.

ABC.h

class ABC
  {
     ABC();
     ABC(int i);
};

ABC.cpp

ABC::ABC()
{
   //do something
}
ABC::ABC(int i)
{
   //do something.
}

XYZ.cpp

#include "ABC.h"
void XYZ1()
{
    ABC abc();          // this passes
}
void XYZ1(int i)
{
    ABC abc(i);         // This results in linker error when I run XYZ's executable
}
void main()
{
    XYZ1();
}

Пожалуйстаобратите внимание, что я использую NetBeans IDE.Я заметил, что параметризованный конструктор приводит к ошибке, конструктор по умолчанию не выдает никакой ошибки.Есть ли какие-либо настройки, которые мне нужно сделать, я нахожусь в IDE NetBeans.

Ответы [ 2 ]

1 голос
/ 24 сентября 2019

Ваш конструктор является приватным, поэтому он не может быть вызван

0 голосов
/ 26 сентября 2019

Я обнаружил проблему, файл XYZ.so искал ABC.so в неправильном месте, и по этой причине он не смог правильно связать его.Причина, по которой он искал в каком-то другом месте, заключалась в том, что в LD_LIBRARY_PATH был задан путь, по этому пути присутствовала другая версия ABC.so.

Спасибо за вашу помощь.

...