c++ - 寻找与不同 C++ 应用程序共享 C++ 函数的不同方法

标签 c++ dynamic static modular

我正在尝试寻找不同的方法在不同的应用程序中重用我的 C++ 函数。比如说我有以下功能:

      Function A(){} // this will do a complex math operation

      Function B(){} // this will load a complex shape file 

      Function C(){} // Print the results. 

我需要在 3 个不同的 C++ 程序中使用上述 3 个函数。它们是完全独立的,我试图找出在我的所有应用程序中使用它们的最佳方法,而不是编写相同的代码 3 次。

我正在考虑以下选项:

      Option A: Writing static library 
      Option B: Writing dynamic library 
      Option C: Windows Services 
      Option D: Same code and compile everywhere 

还有其他选择吗?或者什么是最好的选择?

最佳答案

如果这些函数仅由您和/或您的同事“内部”调用(即它们不会暴露给无权访问您的源代码存储库的人)那么选项(D)就足够了。只需将 .cpp 和 .h 文件保存在源代码存储库的一个众所周知的子目录中,并让每个应用程序的项目文件根据需要引用它们。这很容易实现,并为您提供最大的灵活性(因为每个项目都可以使用最适合其自身需求的不同编译器标志来编译共享 .cpp 文件,如果需要的话,您必须找出一个库适用于所有想要链接到该库的应用程序的编译器标志,但这并不总是很方便)。

如果您正在编写供公众使用的 API,OTOH,事情会变得更加复杂,因为在向公众发布代码后,您将不再完全控制使用哪些版本以及在何处使用。在这种情况下,您必须根据您的用户是谁以及您认为他们最满意的内容来做出决定。

选项 C 可能会被抛弃,因为它对于此类事情来说太过分了,并且会带来将代码绑定(bind)到特定操作系统而没有补偿优势的惩罚。

关于c++ - 寻找与不同 C++ 应用程序共享 C++ 函数的不同方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30269275/

相关文章:

c++ - 没有 .h 的 header 的 Visual Studio 智能感知

Java动态加载和卸载.java文件,垃圾收集?

python - 如何在 Python 中将字符串连接到命令语句的末尾

c - 静态库和动态库有什么区别

c++ - 为什么在第二类中使用 static const 会在第一类中产生编译器错误?

c++ - char 数组的严格别名和并集

c++ - 如何防止 SDL 在调整窗口大小时缩放纹理?

java - Android - 从任何类(class)获取位置

c++ - 算法能否与表达式模板兼容?

php - 根据表单输入更改 SQL "Where"子句