静态库不包含宏
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.
我觉得有些混乱。
要使用任何库,您必须了解它的函数、数据类型(例如:enum
、struct
、typedef
)、宏等...这一切汇集在一起形成图书馆的 'API'.
大多数 库(不是全部)都会有一些内部 headers。你是对的,这些不应该被其他项目看到,并且将在内部严格使用。
所有 库将有一些 'public' headers 定义它们的 API。没有 public API 的代码库要么毫无用处,要么实际上是一个独立的应用程序。
我在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.
我觉得有些混乱。
要使用任何库,您必须了解它的函数、数据类型(例如:enum
、struct
、typedef
)、宏等...这一切汇集在一起形成图书馆的 'API'.
大多数 库(不是全部)都会有一些内部 headers。你是对的,这些不应该被其他项目看到,并且将在内部严格使用。
所有 库将有一些 'public' headers 定义它们的 API。没有 public API 的代码库要么毫无用处,要么实际上是一个独立的应用程序。