我有一个静态库项目(用C语言编写)和另一个示例项目(用C语言编写)在Visual Studio 2015下。我可以使用位于示例项目库中的函数没有任何问题。我的问题是我在静态库项目的一个头文件中有一个宏,我在示例项目中看不到(或使用)这个宏。我收到此错误:“函数main中引用的未解析的外部符号ADD1”。如何在示例项目中使用此宏?
注意:我使用示例项目中的库文件,感谢这个pragma这个pragma:#pragma comment(lib,“mylib.lib”)
答案 0 :(得分:3)
我不想包含静态库项目的任何头文件。他们不应该被其他项目看到。
我认为存在一些困惑。
要使用任何库,您必须了解其功能,数据类型(例如:enum
,struct
,typedef
),宏等...这一切都汇集在一起形成图书馆的API'。
大多数库(并非所有)都有一些内部标头。你是对的,这些不应该被其他项目看到,并且将在内部严格使用。
所有图书馆都会有一些公共图书馆。定义其API的标头。没有公共API的代码库要么无用,要么实际上是一个独立的应用程序。
答案 1 :(得分:2)
使用#include
指令包含您的标头,而不是包含一些编译指示。
应该编写标题,使其成为库的公共接口,即使库代码本身可能未打开。宏是公共的,然后可以在头文件中声明,或者它不是公共的,在这种情况下你应该将它封装在库中。
如果库代码是预编译的并以二进制形式提供,则将其声明为C文件或H调用者无权访问的H文件。