有没有用我自己的任何方式sin
和cos
功能,而不是::std::sin
和::std::cos
在glm::rotate(...)
电话?
我能想到的唯一方法是使用宏替换命名空间中的sin
和cos
符号std
,但我真的不愿意这样做。
使用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”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句