У меня есть библиотека opengl.lib, которая содержит функции-обертки для всех функций opengl. Функции объявляются в их собственном пространстве имен, так что функции обертки могут быть названы с тем же именем, что и функции opengl. Поэтому внутри функции-оболочки функция opengl вызывается с помощью :: gl ***();Проблема с компоновкой C++ с оберткой
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++ wrapper with same name?
Я использую Visual C++ с оптимизацией отключена.
Уход за предоставлением примера функции-обертки и вызова? –
Эй, бездельник! Какой-либо прогресс? :) – ralphtheninja