Добрый вечер,Храните общую библиотеку в использовании собственного экспорта.
У меня есть библиотека, которая импортирует другую библиотеку, которая экспортирует функцию, позволяет называть ее foo(). Я хочу, чтобы моя библиотека служила оберткой для другой библиотеки. Это означает, что я хочу, чтобы моя библиотека экспортировала функцию foo(), которая внутренне вызывает функцию foo() из другой библиотеки. Что-то вроде этого:
myfoo.hpp:
__attribute__((visibility("default"))) void foo(); //my foo() export
myfoo.cpp:
#include "myfoo.hpp"
#include "wrapperfoo.hpp"
void foo()
{
wrapperfoo();
}
wrapperfoo.cpp:
#include "wrapperfoo.hpp"
#include "theotherapifoo.hpp"
void wrapperfoo()
{
::foo(); //PROBLEM!! This seems to call my own exported foo from myfoo.hpp!!!
}
Проблема заключается в том, что обе динамические библиотеки будут связаны в исполняемый файл и мой wrapperfunction, кажется, рекурсивный вызов свою собственную экспортируемую функцию Foo снова и снова, несмотря на wrapperfoo.cpp не включая myfoo.hpp!
Что можно сделать, чтобы это не происходило и доступ к другим библиотекам foo()?
Разве вы не грубо нарушаете правило одного определения? Вы не можете дать двум функциям одно и то же имя. Возможно, я не понимаю ваш вопрос, потому что я очень устал. –
По внешнему виду код заканчивается в замкнутом цикле вызовов. Также почему объект «myfoo» вызывает оболочку оболочки? Разве это не было фактической реализацией? – hauron
Я думаю, вам нужно связать другую библиотеку во время работы. Я не знаю, какие функции использовать, но должен быть способ связать библиотеки во время выполнения и указатели запросов с определенными функциями в загруженной библиотеке. Но при разрешении зависимостей загруженной библиотеки могут возникнуть некоторые проблемы, если вы используете это решение. почему ты хочешь сделать это? – JojOatXGME