共享库和语言标准
Shared libraries and language standards
当然,C99和c++标准都不知道共享库。为什么呢?
编辑:写共享库而不复制Linux/Windows版本的好做法是什么?谢谢。
因为共享库是操作系统的一个特性。
与任何特定语言无关
我可以想到几个原因,为什么这在1999年(就像1999年的情况一样)甚至2011年是有意义的:
-
仍然有一些使用C和c++的系统没有共享库。(嵌入式)。如果标准强制要求某些东西,那么对于那些目标平台的编译器/库实现者来说,生活就不必要地困难了,因为这些平台与共享库的问题无关。
-
不同的操作系统对于共享库有不同的设计选择。如果标准规定了什么,就会限制这些选择。这里也有很多棘手的遗留问题需要考虑,因为共享库实现随着时间的推移而发展。
与C和c++中的许多东西一样,在语言本身没有明确规定的地方,其他更特定于平台的标准做得很好。根据我刚才查找的手册,POSIX.1-2001指定了dlopen
等。如果你的目标是Windows,你知道在哪里可以找到LoadLibrary
/GetProcAddress
。Windows的__declspec
需求也可以封装在一个宏中。如果您同时关心Windows和POSIXy系统,那么编写一个做适当事情的层并不太难。
如何编写共享库,作者:Ulrich Drepper,
阅读第一页关于他们和他们的历史。
相关文章:
- 如何将元素插入到标准::地图的共享指针中?
- 跨语言共享环境变量
- C++ Cmake没有在Travis CI服务器上设置编译器语言标准
- 使用 C++ 标准库避免共享库中的符号冲突
- 设定 AppVeyor 的C++语言标准
- 是C 语言标准允许的空宏
- 为什么将语言标准从-STD = GNU 98到-STD = GNU 11
- 谁以编程语言(例如C )制定标准
- 用C 11共享库编译共享库(旧标准)
- 对于不确定值的无符号字符类型,标准中特殊语言对于左值到右值的转换有什么意义?
- 哪种语言标准允许忽略固定尺寸数组上的空终止器
- 是C 标准非规范的核心语言规范中的注释和示例
- 如何在标准C 11中制作共享_lock或upgrade_lock
- 在.NET语言之间共享类方法
- std::shared_ptr语言 - 将共享指针作为参数传递的最佳做法
- 使用 C/C++ 以外的语言构建共享库,特别是 prolog
- 区分头文件和编译器/语言标准/os/glibc
- 如何在Ruby和其他语言之间共享文本文件(或互斥/信号量)
- 建立链接到其他非标准共享库的共享库
- 共享库和语言标准