У меня есть библиотека opengl.lib, которая содержит функции-оболочки для всех функций opengl. Функции объявлены в их собственном пространстве имен, так что функции-оболочки могут быть названы с тем же именем, что и функции opengl. Таким образом, внутри функции-обертки функция opengl вызывается с помощью :: gl *** ();
opengl.h:
namespace OpenGL {
void glFunction();
}
opengl.cpp:
void OpenGL::glFunction() {
::glFunction();
}
Теперь проблема в том, что когда я использую этот opengl.lib в своем приложении и включаю свой собственный "opengl.h", по какой-то причине реальные функции opengl вызываются напрямую, а не мои функции-оболочки.
Я позаботился о том, чтобы я не включил какой-либо настоящий opengl.h, так что это должно быть какой-то проблемой компоновщика. Как я могу решить это? У меня также есть настоящая библиотека opengl в пути к библиотеке, потому что в противном случае я получаю ошибки компоновщика в моем opengl.lib, поскольку он использует реальные функции opengl. Таким образом, настоящая библиотека opengl и мой opengl.lib каким-то образом смешиваются, и компоновщик решает использовать настоящий opengl.lib вместо моего.
Я знаю, что могу решить эту проблему, переименовав свои функции-оболочки во что-то другое, но я бы хотел использовать те же имена.
Этот вопрос относится к моему предыдущему вопросу Оболочка C ++ с тем же именем?
Я использую Visual C ++ с отключенной оптимизацией.