【问题标题】:Compiling MacOS application with CGL使用 CGL 编译 MacOS 应用程序
【发布时间】:2013-10-20 16:51:39
【问题描述】:

我正在 Mac 上开发 C++ 应用程序并使用 CGL 来初始化 OpenGL:

EGL_CONTEXT EglWrapperMac::CreateContext() {
    EGL_CONTEXT context;
    if (kCGLNoError != CGLCreateContext(m_display, NULL, &context)) {
        throw EXT_EXCEPTION(EGL_WRAPPER_ERROR_CREATE_CTX);
    }
    return context;
}

我还使用 Cmake 生成 XCode 解决方案。 不幸的是,由于缺少所需的库,构建失败。我在cmake中尝试了以下语句: set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -framework CGL -framework OpenGL")set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -lCGL -lOpenGL") 没有运气。

更新:以下是编译错误:

Undefined symbols for architecture x86_64:

  "_CGLChoosePixelFormat", referenced from:
      EglWrapperMac::EglWrapperMac(EglSetup const&, std::__1::shared_ptr<IEngineWindow>) in libVEngineRenderer.a(EglWrapper.o)
  "_CGLCreateContext", referenced from:
      EglWrapperMac::CreateContext() in libVEngineRenderer.a(EglWrapper.o)
  "_CGLDestroyPixelFormat", referenced from:
      EglWrapperMac::~EglWrapperMac() in libVEngineRenderer.a(EglWrapper.o)
  "_CGLFlushDrawable", referenced from:
      EglWrapperMac::Present() in libVEngineRenderer.a(EglWrapper.o)
  "_CGLGetCurrentContext", referenced from:
      EglWrapperMac::GetCurrentContext() in libVEngineRenderer.a(EglWrapper.o)
  "_CGLReleaseContext", referenced from:
      EglWrapperMac::DeleteContext(_CGLContextObject*) in libVEngineRenderer.a(EglWrapper.o)
  "_CGLSetCurrentContext", referenced from:
      EglWrapperMac::MakeCurrent(_CGLContextObject*) in libVEngineRenderer.a(EglWrapper.o)

我该如何处理?

【问题讨论】:

  • 你如何显示你得到的错误?
  • OS X 中没有 CGL 框架(CGL 包含在 OpenGL 框架中,您只需要 #include OpenGL/OpenGL.h),您也不要使用 -lXXX 链接到框架。现在,根据您的 Makefile 的结构,您可能还有一个称为 LD_FLAGS 的属性,用于单独的链接阶段 - 您需要在其中包含 -framework OpenGL。这个指令both,包括框架的路径解析和链接器路径解析。

标签: c++ macos opengl cmake


【解决方案1】:

感谢您的帮助。我能够在 cmake 中使用以下代码解决问题:

include_directories ( /System/Library/Frameworks )
find_library(OpenGL_LIBRARY OpenGL )
set(EXTRA_LIBS ${OpenGL_LIBRARY})

//add_library (VEngineRenderer STATIC ${RENDER_FILES})

target_link_libraries(VEngineRenderer ${EXTRA_LIBS})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-08
    • 2020-12-27
    相关资源
    最近更新 更多