【发布时间】:2021-03-25 12:37:29
【问题描述】:
我正在尝试在同一个项目中使用 freetype-gl 和 cgml,但它们都实现了诸如“vec2”之类的名称,但方式完全不同(一个作为结构,另一个 - 作为浮点数组),这意味着重新定义会导致错误
我真的不想替换其中一个模块中的所有名称来解决这个问题,还有其他方法吗?
【问题讨论】:
-
是的,有。使用两个模块的一种方法。
-
标准的 c 解决方案是前缀符号。您是否检查过是否有任何构建魔法?不要将它们链接在同一个二进制文件中并使用 IPC,这会很烦人。你不链接标题,你链接库。
-
@user14063792468 dlopen?
-
@AllanWind 不同的 .c 文件应该转到不同的 .o 模块。您可以在两个不同的模块中拥有同名的
typedef's。您可以从另一个模块中的一个模块调用函数。这不是基本的C范式吗? -
当您将这些 .o 文件链接到单个二进制文件中时,您会遇到名称冲突(函数或原始类型。typedef 将用于您的代码,但这是第 3 方库)。
标签: c compilation linker