我试图将nanogui添加到已经使用glfw的OpenGL项目中。有一个示例在文档中确切地说明了如何执行此操作,但我无法在此示例项目之外复制它。
我的问题出现在链接步骤:
Error LNK2019 unresolved external symbol "public: __thiscall nanogui::Screen::Screen(void)" (??0Screen@nanogui@@QAE@XZ)
有罪的行是nanogui::Screen * screen = new nanogui::Screen();
,是唯一一个引用该库的行。
问题似乎很明显,编译器理解我将需要nanogui函数并期望链接器找出这些函数的代码在哪里,除了链接器失败。
这就是我所做的:
令我感到困惑的是,我能够从源代码编译库并运行示例项目。必须有某种我缺少的参数/标志,但我无法弄明白。我在样本项目中使用预处理器标记玩了一点但没有运气。
编辑:当我使用作者提供的项目并使用CMake生成但无法在其外部复制时,我设法运行sample project。
答案 0 :(得分:0)
您需要为x64(而不是默认的x86)构建库。只需使用cmake -G "Visual Studio 15 2017 Win64" ..
(变体)运行cmake,即显式指定Win64
。然后,您可以简单地在Visual Studio中构建NanoGUI.sln并链接到生成的nanogui.lib。如果未使用cmake指定目标,则只能获得Win32选项作为构建目标,根据文档不支持。