1

Тема: Проблема при компилировании библиотеки под Linux

Сейчас хотел упростить компилирование библиотек .so приборов. По идее мы должны указать нашей программе папку с исходными кодами, а она дальше сама их компилирует и сразу отображает, поэтому и пробую минимизировать количество операций. В итоге вылезла странная вещь:
В файле GraphLibOGL.h описания функций

int/*bool*/  BGLCreateFont(char const *facename, int32 size, int/*bool*/ bold, int/*bool*/ italic, struct BGLFont *fnt/*out*/)
float32 BGLCalcTextLengthW(int32 font, char_un const *text, int/*bool*/ smooth)   /* определение длины текстовой строки в пикселях для unicode */
struct BGLChar const *BGLGetChar(int32 font, char_un ch, int/*bool*/ smooth)

не соответствуют функциям из файла font_api.cpp

long/*bool*/ BGLCreateFont(char const *facename, long size, long/*bool*/ bold, long/*bool*/ italic, struct BGLFont *fnt/*out*/)
float BGLCalcTextLengthW(long font, char_un const *text, long/*bool*/ smooth)        /* определение длины текстовой строки в пикселях */
struct BGLChar const *BGLGetChar(long font, char_un ch, long/*bool*/ smooth)

После исправления описаний на одинаковые, всё компилируется нормально, но шрифт отображается с искажениями. См. приложение. Причину которых я пока так и не понял. 
Специально ли сделано несоответствие описаний? В какую сторону копать со шрифтом?

Post's attachments

Иконка вложений Codegen_160628.tar.gz 470.03 Кб, 314 скачиваний с 2016-06-30 

Иконка вложений Снимок экрана от 2016-06-30 10-26-18.png 43.06 Кб, 260 скачиваний с 2016-06-30 

2

Re: Проблема при компилировании библиотеки под Linux

Здравствуйте!
Некоторое время назад мы отказались от типа long в создаваемом программном коде. Вам необходимо файлы FontMngr.h и SymbolCreator.h заменить на те, что находятся в проекте CGFormatPro2.X.Test.Linux-x64.Qt.OpenGL. А для блока в конце файла font_api.cpp использовать:

int/*bool*/ BGLCreateFont(char const *facename, int32 size, int/*bool*/ bold, int/*bool*/ italic, struct BGLFont *fnt/*out*/)
{    extern int32 g_bgl_dpi;    /* значение DPI монитора в системе на момент генерации кода */
    return m_FontMngr.AddFont(facename,size,g_bgl_dpi,bold!=0,italic!=0,fnt);
}
float32 BGLCalcTextLengthA(int32 font, char_mb const *text, int/*bool*/ smooth)        /* определение длины текстовой строки в пикселях */
{    return m_FontMngr.GetLength(font,text,smooth!=0);
}
float32 BGLCalcTextLengthW(int32 font, char_un const *text, int/*bool*/ smooth)        /* определение длины текстовой строки в пикселях */
{    return m_FontMngr.GetLength(font,text,smooth!=0);
}
struct BGLChar const *BGLGetChar(int32 font, char_un ch, int/*bool*/ smooth)
{    return m_FontMngr.GetChar(font,(wchar_t)ch,smooth!=0);
}
void BGLDestroyFonts(void)
{    m_FontMngr.Destroy();
}
/**/
int/*bool*/ BGLCreateSymbol(wchar_t const *path, int/*bool*/ useColorKey, uint32 colorKey, struct BGLSymbol *smb/*out*/)
{    return SymbolCreator().Add(path,useColorKey!=0,colorKey,smb);
}

3

Re: Проблема при компилировании библиотеки под Linux

Исправил, но к сожалению проблема осталась

4

Re: Проблема при компилировании библиотеки под Linux

Короче, фиг его знает почему это так, сделал все заново, начиная с Вашего QT проекта, в итоге все компилируется нормально, отображается без искажений.