-1

我已经尽我所能尝试了两种方法:

  1. 一个包含两个项目 Nukear 和 Nuklar 测试的解决方案。Nuklear 包含它所有的 c 文件和头文件。然后它编译成一个静态库,并在核试验中添加了它的引用。
  2. 所有这些都在一个项目中 - 演示文件和核库文件。

两个都不行

在这两种情况下,我还为 x64 Debug 链接了以下 .lib:

  1. opengl32.lib
  2. glew32sd.lib
  3. glfw3.lib

我认为我得到的主要错误是:

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2001 unresolved external symbol NK_MEMCPY    NuklearTest D:\vs_project\NuklearT\NuklearTest\NuklearTest\Nuklear.lib(nuklear_buffer.obj)  1   

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2001 unresolved external symbol NK_MEMSET    NuklearTest D:\vs_project\NuklearT\NuklearTest\NuklearTest\Nuklear.lib(nuklear_context.obj) 1   
4

1 回答 1

0

Nuklar 是自包含在单个头文件中的。中的文件src不是直接构建的,应该通过src/paq.bator打包到适当的库头中,src/paq.sh意味着src/nuklear.h不应包含在您的项目中。在项目的主目录中,您无需运行任何脚本即可使用的预构建标头。 如果您想静态链接此库,只需构建打包的标头,然后将其链接到您的项目中。

如何包含用于构建的库

nuklear.h可以包含在实现模式或仅标头模式中,前者必须只包含一次,否则会出现多个链接错误,而后者可以在包含在其他文件中时使用。同样在每次包含标题之前,所有可选标志都应该重新定义。
要将其包含在实现NK_IMPLEMENTATION模式中,应在包含它之前定义宏。

#define NK_IMPLEMENTATION //< Include nuklear in implementation mode
#include "nuklear.h"

在使用 Nuklear 的任何功能时,不需要链接任何其他库。但是为了渲染任何东西都需要一个后端,例如 OpenGl 或 Allegro5,并且应该像在任何其他应用程序中一样设置它。

如何在项目中使用该库

没有为渲染/事件后端提供抽象(库不直接进行操作系统或窗口处理),这意味着任何后端都可用于渲染 Nuklear 生成的 GUI,而不仅仅是系统提供的默认 GUI。查看API 文档,了解如何实现渲染“引擎”和项目的输入处理。
有几个针对不同后端的演示demo这些演示头文件可以包含在您的项目中以进行大部分处理,其余的可以从main.c目录中的文件改编。
还有如何使用此文件夹中的每个功能的示例(尤其是在 中demo/overview.c)。

于 2021-06-07T03:19:44.400 回答