Ваша проблема очень похожа на Рекомендационную систему , где вы хотите рекомендовать правильного клиента, который может ответить на заданный вопрос.
Очень похоже на Фильм / Предметы / Новостная система рекомендаций . Что касается фильмов, у нас есть длинный список фильмов, как рекомендовать лучшие фильмы пользователю на основе его интереса и истории.
Существует множество подходов для решения этой проблемы, обратите внимание, что ваши данные будут очень скудными (матрица агента клиента, где каждая ячейка представляет балл). Вы можете использовать SVD , вот пример по его использованию.
Есть несколько полезных ресурсов первый , второй , которые вы можете сослаться.
Это кажется, что Вы хотите связаться против собственных библиотек Win32 вместо X11. Добавьте-L/lib/w32api. Иначе необходимо связаться против библиотек X11 (-L/usr/X11R6/lib-lX11-lXi-lXmu) для избавлений от glX* ошибки компоновщика..
Некоторое время назад у меня была похожая проблема, и я обнаружил, что есть два способа скомпилировать код opengl под Cygwin.
Первые ссылки на родные библиотеки win32api glut32, glu32, opengl32 (также glui).
Они несколько старше:
перенасыщение v3.7.6
opengl v1.1
glui 2.11
Второй способ использует библиотеки X11 glut glu gl. В их файлах заголовков указан более новый номер версии (обратите внимание, что для использования расширений GL требуется> v1.2):
glut v4 (freeglut)
opengl v1.3
glext
...
Итак, чтобы использовать первый вариант, скомпилируйте с: -I / usr / include / opengl
и ссылку на: -lglut32 -lGLU32 -lOpenGL32
Чтобы использовать версию X11, скомпилируйте с : -I / usr / include / (который включен по умолчанию)
и ссылка на: -lglut -lGLU -lGL (обратите внимание на разницу)
вы можете добавить заголовки и библиотеки X11, но я думаю, они включены в GL.
-I / usr / X11R6 / include
-L / usr / X11R6 / lib -lXmu -lXi -lXext -lX11
В установщике Cygwin вы можете выбрать следующие пакеты:
opengl - предоставляет win32-версию opengl, glut, glui
libglut-devel - X11-версию glut (freeglut) , это также выберет все зависимые пакеты. (glproto, libGL libGLU, libX11, ...)
Я также рекомендую включить Xorg-server , так как вам понадобится X-сервер.
Надеюсь, это поможет.
Did any previous suggestion work for you?
I am not clear whether you are facing issues in linking or compiling GLEW. I use GLEW via including source and have used by linking in past.
If you want to compile GLEW then make sure you pick right zip, as using *nix based code's scripts may not run correctly under windows (not sure of Cygwin).
GLEW should be first in header and linking order.
Чтобы убедиться, что мы говорим об тех же проблемах, вот сообщение, которое я получал.
$ g ++ -o glew_test.exe glew_test.cpp -lglut32 -lglew32
c: \ Users \ Fredrik \ Users \ Fredrik \ AppAppData \ Local \ Temp / ccgSNdfr.o:
glew_test.cpp :(. text + 0x1c): неопределенная ссылка на `__glutInitWithExit '
c: \ Users \ Fredrik \ AppData \ Local \ Temp / ccgSNdfr.o:
glew_test.cpp :(. text + 0x37): неопределенная ссылка на `__glutCreateWindowWithExit '
c: \ Users \ Fredrik \ AppData \ Local \ Temp / ccgSNdfr.o:
glew_test.cpp :(. text + 0x53): неопределенная ссылка на `__glutCreateMenuWithExit '
c: \ Users \ Fredrik \ AppData \ Local \ Temp / ccgSNdfr.o:
glew_test.cpp :(. text + 0x9e): неопределенная ссылка на `glutInitDisplayMode '
c: \ Users \ Fredrik \ AppData \ Local \ Temp / ccgSNdfr.o:
glew_test.cpp :(. text + 0xb2): неопределенная ссылка на `glutInitWindowPosition '
c: \ Users \ Fredrik \ AppData \ Local \ Temp / ccgSNdfr.o:
glew_test.cpp :(. text + 0xc6): неопределенная ссылка на `glutInitWindowSize '
collect2: ld вернул 1 статус выхода
Следующие страницы помогли мне с этой проблемой.
В основном мне приходилось определять _STDCALL_SUPPORTED и _M_IX86 в начале файла и включать windows.h перед glew.h
Затем я использовал флаги -lglut32 -lglew32
Если вы хотите попробовать, вот также исходный код:
#define _STDCALL_SUPPORTED
#define _M_IX86
#include <windows.h>
#include <GL/glew.h>
#include <GL/glut.h>
#include <cstdio>
int main(int argc, char **argv) {
glutInit(&argc, argv);
glutCreateWindow("MM 2004-05");
glewInit();
if (glewIsSupported("GL_VERSION_2_0"))
printf("Ready for OpenGL 2.0\n");
else {
printf("OpenGL 2.0 not supported\n");
}
return 0;
}
Обратите внимание, что окно по какой-то причине необходимо для теста OpenGL2.0.