静态库不包含宏

static library doesn't contain macro

我在Visual Studio2015下有一个静态库项目(用C语言写的)和另一个示例项目(用C语言写的)。我可以使用函数位于示例项目中的库中没有任何问题。我的问题是我在静态库项目的一个头文件中有一个宏,但我在示例项目中看不到(或使用)这个宏。我收到此错误:"unresolved external symbol ADD1 referenced in function main"。如何在示例项目中使用此宏?

注意:由于这个 pragma 这个 pragma:#pragma comment(lib, "mylib.lib")

,我在示例项目中使用了库文件

将您的 header 包含在 #include 指令中,而不是一些 pragma。

A header 应该写成它是你的库的 public 接口,即使库代码本身可能不开放。要么宏是 public,然后可以在 header 中声明,要么它不是 public,在这种情况下,您应该将其封装在库中。

如果库代码是 pre-compiled 并以二进制形式交付,请在调用者无权访问的 C 文件或 H 文件中声明它。

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'.

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

所有 库将有一些 'public' headers 定义它们的 API。没有 public API 的代码库要么毫无用处,要么实际上是一个独立的应用程序。