如果要生成以 C++ 编写但可用于 C 程序的库,必须创建 C API(application programming interface,应用程序编程接口)。为此,应先使所有导出的函数为 extern "C"。注意,只有在全局函数中才能够完成该操作,在成员函数中不行。
如果 C 接口库需要 C++ 运行时支持,且要使用 cc 进行链接,则在使用 C 接口库时,您还必须将您的应用程序与 libCrun 进行链接(标准模式)。(如果 C 接口库不需要 C++ 运行时支持,则不必与 libCrun 进行链接。)归档库与共享库的链接步骤是不同的。
提供归档的 C 接口库时,必须提供如何使用该库的说明。
如果 C 接口库是在标准模式(缺省模式)下使用 CC 生成的,那么在使用该 C 接口库时,将 -lCrun 添加到 cc 命令行。
如果 C 接口库是在兼容模式 (-compat=4) 下使用 CC 生成的,则在使用 C 接口库时,请将 -lC 添加到 cc 命令行。
提供共享的 C 接口库时,必须在生成库时创建对 libCrun 的依赖性。如果共享库具有正确的依赖性,则在使用该库时不需要将 -lCrun 添加到命令。
如果要在缺省标准模式下生成 C 接口库,则在生成该库时应该将 -lCrun 添加到 CC 命令。
如果要删除对 C++ 运行时库的任何依赖性,应该在库源文件中强制应用下列代码规则:
不要使用任何形式的 new 或 delete,除非提供了自己的相应版本。
不要使用异常。
不要使用运行时类型信息 (RTTI)。