如何在 Terra 中链接(非标准)库?

我想在Terra / Lua(更好的元编程)中使用raylib,但官方示例仅显示如何与C标准库进行接口,我假设Terra已经链接到了C标准库。

但是raylib有一个标题(raylib.h,我知道如何在terra中包含它)和一个so / dll文件(库的实际代码)。

如何将我的Terra cide与raylib链接起来?

P.S.我主要关注编写Terra和在Lua中进行宏,这是Terra网站上列出的第三种用例:

一个独立的低级语言。Terra被设计成可以独立于Lua运行。事实上,如果你的最终程序不需要Lua,你可以将Terra代码保存为.o文件或可执行文件。除了确保高级和低级代码之间的清晰分离,这种设计还允许您使用Terra作为独立的低级语言。在这种用例中,Lua作为强大的元编程语言。在这里,它用作C ++模板元编程或C预处理器X-Macros的替代品,具有更好的语法和更好的属性,例如卫生。由于Terra仅存在于嵌入在Lua元程序中的代码中,因此通常内置于低级语言中的特性可以实现为Lua库。这种设计使Terra的核心保持简单,同时实现了强大的行为,例如条件编译,命名空间,模板化甚至是作为库实现的类系统。

点赞
用户7419679
用户7419679

我想我找到了我需要的。

terralib.linklibrary(filename)

加载filename参数指定的动态库。如果使用 includec 导入的头文件包含有未链接到Terra可执行文件中的声明定义,那么需要使用 linklibrary 动态加载这些定义。在使用 terra REPL/driver 应用程序时,就会出现这种情况。

来源:Terra文档

2017-06-23 15:54:09