在 glm::rotate 中使用 "custom" sin 和 cos
Use "custom" sin and cos in glm::rotate
有什么方法可以在 glm::rotate(...)
调用中使用我自己的 sin
和 cos
函数代替 ::std::sin
和 ::std::cos
吗?
我能想到的唯一方法是使用宏替换 std
命名空间内的 sin
和 cos
符号,但我真的不想那样做.
使用 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"。 运行 它预装了我们的库
LD_PRELOAD=./libmysin.so ./a.out
现在结果将是“1010”。
有什么方法可以在 glm::rotate(...)
调用中使用我自己的 sin
和 cos
函数代替 ::std::sin
和 ::std::cos
吗?
我能想到的唯一方法是使用宏替换 std
命名空间内的 sin
和 cos
符号,但我真的不想那样做.
使用 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"。 运行 它预装了我们的库
LD_PRELOAD=./libmysin.so ./a.out
现在结果将是“1010”。