c++ - 将 C++ 源代码构建为一个库——从哪里开始?

标签 c++ entity-framework dynamic-linking

在过去的几个月里,我编写了一些足够好的通用功能,我想将它们构建为一个库并动态链接,而不是导入 50 多个头文件/源文件。

该项目在 Xcode 和 Dev-C++ 中维护(我知道我可能必须使用命令行来执行我想做的事情)并且必须链接到 OpenGL 和 SDL(在 SDL 的情况下是动态的)。目标平台是 Windows 和 OS X。

我到底在看什么?

  • 我的入口点是什么 图书馆是否需要?
  • 我的代码需要更改什么? (调用约定?)
  • 我如何发布它?我的理解 是标题和编译 库(.dll,.dylib(,.framework), 不管它会是什么)需要 可用于项目 - 特别是作为模板功能 不能被包含在库中 自然。
  • 我还需要注意什么?

最佳答案

我建议构建为 statc 库而不是 DLL。如果您这样做,导出 C++ 函数和类的许多问题都会消失,前提是您只打算链接由您构建库时使用的同一编译器生成的代码。

构建静态库非常简单,因为它只是 .o/.obj 文件的集合 - 有点像 ZIP 文件,但没有压缩。无需导出任何内容 - 只需将库包含在您的应用程序链接的文件列表中即可。要访问特定的函数或类,只需包含相关的头文件即可。请注意,您无法摆脱头文件 - C++ 编译模型(尤其是模板)依赖于它们。

关于c++ - 将 C++ 源代码构建为一个库——从哪里开始?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/927063/

相关文章:

c++ - 为什么通过通用引用运算符 (&&) 将变量引用传递给可变参数模板函数失败?

entity-framework - 在 Entity Framework 代码中,有没有办法向导航集合添加分页?

c - 在运行时加载动态库会产生不一致和意外的结果、缺少符号和空 PLT 条目。为什么?

xcode - 是否可以在没有链接到的静态库的符号的情况下构建动态框架?

c++ - 暂时禁用 SDL 事件队列?

c++ - 在基类中调用同名方法

c# - EF4 : Why does proxy creation have to be enabled when lazy loading is enabled?

c# - 无法在类库中为 Entity Framework 启用迁移

c++ - 您如何向插件库公开功能?

c++ - 绕过 C++ 严格别名规则