静态库不包含宏

时间:2017-04-03 13:58:40

标签: c visual-studio macros static-libraries lib

我有一个静态库项目(用C语言编写)和另一个示例项目(用C语言编写)在Visual Studio 2015下。我可以使用位于示例项目库中的函数没有任何问题。我的问题是我在静态库项目的一个头文件中有一个宏,我在示例项目中看不到(或使用)这个宏。我收到此错误:“函数main中引用的未解析的外部符号ADD1”。如何在示例项目中使用此宏?

注意:我使用示例项目中的库文件,感谢这个pragma这个pragma:#pragma comment(lib,“mylib.lib”)

2 个答案:

答案 0 :(得分:3)

  

我不想包含静态库项目的任何头文件。他们不应该被其他项目看到。

我认为存在一些困惑。

要使用任何库,您必须了解其功能,数据类型(例如:enumstructtypedef),宏等...这一切都汇集在一起形成图书馆的API'。

大多数库(并非所有)都有一些内部标头。你是对的,这些不应该被其他项目看到,并且将在内部严格使用。

所有图书馆都会有一些公共图书馆。定义其API的标头。没有公共API的代码库要么无用,要么实际上是一个独立的应用程序。

答案 1 :(得分:2)

使用#include指令包含您的标头,而不是包含一些编译指示。

应该编写标题,使其成为库的公共接口,即使库代码本身可能未打开。宏是公共的,然后可以在头文件中声明,或者它不是公共的,在这种情况下你应该将它封装在库中。

如果库代码是预编译的并以二进制形式提供,则将其声明为C文件或H调用者无权访问的H文件。