2016-09-24 7 views
0

나는 내 응용 프로그램에 대한 링커 인수를 생성하는 wx-config --libs을 사용하고, 출력은 다음과 같다 :wxGLCanvas의 생성자에 대한 정의되지 않은 참조는 무엇입니까?

-L/usr/lib/x86_64-linux-gnu -pthread -lwx_gtk2u_xrc-3.0 -lwx_gtk2u_html-3.0 -lwx_gtk2u_qa-3.0 -lwx_gtk2u_adv-3.0 -lwx_gtk2u_core-3.0 -lwx_baseu_xml-3.0 -lwx_baseu_net-3.0 -lwx_baseu-3.0

내 응용 프로그램의 컴파일하지만, 대신 wxGLCanvas의 생성자에 정의되지 않은 참조를 인용, 링크하지 않습니다. 하나의 생성자가 사용되지 않는 것을 알고 있지만, 그렇지 않은 생성자를 사용하는 것 같습니다 : wxGLCanvas(<frame>,wxID_ANY,NULL)http://docs.wxwidgets.org/3.0/classwx_g_l_canvas.html.

링커 오류의 나머지 부분은 모두 wxGLCanvas의 다양한 메서드에 대한 정의되지 않은 참조입니다. 안전한 측정을 위해 모든 대상에 -DwxUSE_GLCANVAS=1을 추가했으나 아무 효과가 없었습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? 이 관련이 경우

, 나는 또한 컴파일시 wx-config --cflags를 사용

-I/usr/lib/x86_64-linux-gnu/wx/include/gtk2-unicode-3.0 -I/usr/include/wx-3.0 -D_FILE_OFFSET_BITS=64 -DWXUSINGDLL -D__WXGTK__ -pthread

공지 사항 또한 문서가 아직 사용되지 표시된 것으로 보인다에서 setCurrent를 사용하는 것이 좋습니다. 내가 링크 한 것보다 최근 문서가 더 있습니까?

+0

* 어디에 * 라이브러리를 연결 하시겠습니까? 명령 줄에서 말하는 건가? 오브젝트 파일과 라이브러리의 순서가 중요 할 수 있습니다. * 개체 * (또는 원본) 파일 다음에 항상 라이브러리 *를 넣으십시오. 행의 끝에 –

+0

: '$ (CXX) -O $ @ $ (OBJECTS) $ (LDFLAGS)' ... LDFLAGS는 ... 'LDFLAGS = $ (LDFLAGS) $ $ (wx-config --libs) -lGL' wxGLCanvas가없는 창일 때 응용 프로그램이 링크되었습니다. –

+2

[이 wiki 읽기] (https://wiki.wxwidgets.org/WxGLCanvas) OpenGL 라이브러리를 얻으려면'-gl-libs'를'wx-config' 명령에 추가해야 할 것 같습니다. 너 그거 해봤 니? –

답변

1

wx-config --libswx-config --libs std과 같습니다. 여기서 "std"는 기본적으로 사용되는 것으로 간주되는 "표준"라이브러리의 하위 집합을 나타냅니다. "webview", "richtext"또는 실제로 "gl"와 같이이 목록에없는 라이브러리를 사용하려면 명시 적으로 나열해야합니다.

따라서 올바른 명령은 wx-config --libs std,gl입니다.