Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ linux上动态链接期间符号的替代实现_C++_Linux_Linker - Fatal编程技术网

C++ linux上动态链接期间符号的替代实现

C++ linux上动态链接期间符号的替代实现,c++,linux,linker,C++,Linux,Linker,我有一个使用共享库的动态链接的linux可执行文件。其中一个库有一个供该库中的其他函数使用的函数-该函数的目标代码包含在此库中。我希望提供该函数的替代实现,以便其他函数调用我的代码,而不是调用库中的原始代码 有什么方法可以做到这一点吗?如果不使用新的更改编译库,就无法做到这一点 如果这些函数是全局函数或静态函数,则必须重新编译 如果这些函数是虚拟成员函数,并且您的应用程序/库具有挂钩/可扩展性或工厂之类的功能,可以将派生对象添加到应用程序中,您可以对其进行更改 否则,您必须重新编译库代码。不能不

我有一个使用共享库的动态链接的linux可执行文件。其中一个库有一个供该库中的其他函数使用的函数-该函数的目标代码包含在此库中。我希望提供该函数的替代实现,以便其他函数调用我的代码,而不是调用库中的原始代码


有什么方法可以做到这一点吗?

如果不使用新的更改编译库,就无法做到这一点

如果这些函数是全局函数或静态函数,则必须重新编译

如果这些函数是虚拟成员函数,并且您的应用程序/库具有挂钩/可扩展性或工厂之类的功能,可以将派生对象添加到应用程序中,您可以对其进行更改


否则,您必须重新编译库代码。

不能不重新编译库;除非函数允许函子或多态性。如果可以使用LD_PRELOAD,则可以提供替代实现。你可以在网上或网上阅读更多关于它的信息。谢谢,这正是我想要的。