Я получаю следующие ошибки. Я не мог решить это сам.
Сообщение об ошибке:
interface.cpp:191:10: error: request for member 'FaceSize' in 'interface::font', which is of non-class type 'void*'
font.FaceSize(fontSize);
^
interface.cpp:202:18: error: request for member 'Render' in 'interface::font', which is of non-class type 'void*'
font.Render(todisplay);
^
interface.cpp:215:10: error: request for member 'Render' in 'interface::font', which is of non-class type 'void*'
font.Render(todisplay);
^
Ниже приведен фрагмент кода, откуда поступают ошибки:
#if defined(__APPLE__)
FTGLPixmapFont font("/Library/Fonts/Arial.ttf");
#elif defined(_WIN32) || defined(_WIN64) || defined(WINDOWS) || defined(MINGW) || defined(MINGW64)
FTGLPixmapFont font("C:\\Windows\\Fonts\\Arial.ttf");
#elif defined(__LINUX__)
FTGLPixmapFont
font("/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf");
#endif
font.FaceSize(fontSize);
glPushMatrix();
for (float xCount = -borderWidth/2; xCount <= borderWidth/2; xCount++)
{
for (float yCount = -borderWidth/2; yCount <= borderWidth/2; yCount++)
{
glRasterPos3f(
x+xCount*fontscaleX,
y+yCount*fontscaleY,
INTERFACE_TEXT_SHADER_DEPTH
);
font.Render(todisplay);
}
}
glColor3f(foregroundRed, foregroundGreen, foregroundBlue);
glRasterPos3f(x, y, INTERFACE_TEXT_DEPTH);
font.Render(todisplay);
glPopMatrix();
Этот код прекрасно встраивается в OS X без каких-либо проблем. Но когда я пытаюсь встроить Ubuntu, он не может собрать. Я пытаюсь построить с помощью иконок сценария. Ниже приведена команда для компиляции файла interface.cpp:
g ++ -o interface.o -c -Wall -ansi -pedantic -O2 -lGL -lGLU -lX11 -std = c ++ 11 -DSETTINGS_DEVELOPMENT -DUSER_UMA -I / usr / include / mysql -I / opt / local / include — Я / usr / include / boost / system -I / usr / include / boost -I / usr / include / boost / test -I / usr / include / boost / timer -I / opt / local / include / mariadb / mysql — Я / usr / include / freetype2 -Irapidxml -Ilru_cache interface.cpp
Препроцессор может не определять __linux__
в твоем случае.
Согласно Руководство GCC а также этот ответ Вы можете проверить, какие макросы предопределены, запустив:
$ touch dummy.cpp
$ cpp -dM dummy.cpp
Других решений пока нет …