在sin
来电中,有没有办法使用我自己的cos
和::std::sin
功能代替::std::cos
和glm::rotate(...)
?
我能想到的唯一方法是使用宏来替换sin
命名空间内的cos
和std
符号,但我真的不愿意这样做。< / p>
答案 0 :(得分:3)
使用LD预加载将起作用。
我将用一个小例子来解释。
假设这是我们的主要代码......
int main()
{
std::cout<< std::sin(1000);
return 0;
}
如果我编译并运行它,它应该打印0.82688
现在我定义了自己的罪
<强> mysin.hpp 强>
extern "C"
{
double sin(double);
}
<强> mysin.cpp 强>
#include "mysin.hpp"
double sin(double in)
{
return in + 10;//do you computation here
}
现在将其编译为共享库
g++ -O2 -c -fPIC mysin.cpp -o mysin.o
g++ -shared -Wl,-soname,libmysin.so mysin.o -o libmysin.so
假设原始程序编译为“a.out”。使用我们的lib预加载
运行它LD_PRELOAD=./libmysin.so ./a.out
现在结果将是“1010”。