2017-04-03 133 views
0

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

注:我使用的示例项目由于在库文件到该编译该编译指示:#pragma评论(LIB,“MYLIB.LIB”)

+2

和你怎么包括该库的头文件? –

+0

您是否在代码中包含标题? – LPs

+0

不,我不知道!此外,我不想包含任何静态库项目的头文件。他们不应该被其他项目看到。 – sanchop22

回答

2

包括与#include指令你的头,无法与某些编译。

页眉应该这么写,它是公共接口库中,即使库代码本身可能不开放。宏是公开的,然后可以在头中声明,或者它不公开,在这种情况下,您应该将其封装在库中。

如果库中的代码是预编译为二进制传输,无论是在C文件或调用者不具有访问.h文件声明。

+1

'pragma'用于Visual Studio - 这是将库的二进制文件链接到应用程序的一种方法。 ('gcc'为此使用'-l'选项)。 – Attie

+1

@Attie图书馆不是一个标题,但它需要提供一个。 – Lundin

3

I do not want to include any of the header files of the static library project. They are not supposed to be seen by other projects.

我认为存在一些混淆。


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

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

所有图书馆将具有定义他们的API一些“公共”的标题。没有公共API的代码库是无用的,或者实际上是一个独立的应用程序。

相关问题