Как связать динамическую библиотеку с кодом cpp?

Хочу использовать этот репо
Сделал все правильно получил динамическую библиотеку .so
Но когда компилирую g++ a.cpp -llibselenium из той же директории где и .со
Не компилируется с ошибкой:
root@vm:~# g++ a.cpp -llibselenium
a.cpp: In function ‘int main(int, char**)’:
a.cpp:12:60: error: no matching function for call to ‘Selenium::Selenium(const char [29])’
   Selenium* s = new Selenium("http://127.0.0.1:4444/wd/hub");
                                                            ^
In file included from a.cpp:1:0:
/usr/local/include/selenium/selenium.hpp:12:4: note: candidate: Selenium::Selenium(std::__cxx11::string, bool)
    Selenium(std::string,bool);
    ^~~~~~~~
/usr/local/include/selenium/selenium.hpp:12:4: note:   candidate expects 2 arguments, 1 provided
/usr/local/include/selenium/selenium.hpp:8:7: note: candidate: Selenium::Selenium(const Selenium&)
 class Selenium {
       ^~~~~~~~
/usr/local/include/selenium/selenium.hpp:8:7: note:   no known conversion for argument 1 from ‘const char [29]’ to
 ‘const Selenium&’
/usr/local/include/selenium/selenium.hpp:8:7: note: candidate: Selenium::Selenium(Selenium&&)
/usr/local/include/selenium/selenium.hpp:8:7: note:   no known conversion for argument 1 from ‘const char [29]’ to
 ‘Selenium&&’


как я понимаю функция обьявленая в заголовке не экспортируется из библиотеки при компиляции. как это исправить?

код в а.цаа из примера:
#include <selenium/selenium.hpp>
#include <iostream>
#include <vector>

using std::string;
using std::cout;
using std::endl;

int main(int argc,char** argv) {
	
  //creates new selenium object with the selenium entry page as argument.
  Selenium* s = new Selenium("http://127.0.0.1:4444/wd/hub"); // ошибка тут

  //creates new selenium session.    
  Session* sess = s->createSession(new Capabilities());

  //goes to the google home page.
  sess->url("http://www.google.com");

  //gets all the links on the page
  std::vector<Element*> links = sess->elements(new ElementQuery(ElementQuery::STRAT_TAG_NAME,"a"));

  //displays the number of links on the google homepage
  cout << "# of links:" << links.size() << endl;

}
  • Вопрос задан
  • 103 просмотра
Пригласить эксперта
Ответы на вопрос 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Пока похоже ошибка не с библиотекой. Вы неправильно используете объявленные в хедере функции. Судя по сообщениям об ошибке, конструктор класса Selenium помимо строки получает еще и bool.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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