调用静态库中的方法
Calling a method in a static library
我正试图用gcc在OSX上从头开始编写一个C标准库。当我试图在测试程序中包含库中的头文件时,我会得到一个未定义的错误。我尝试使用-nostlib标志,但仍然无法包含我的文件。
我的测试程序:
#include <math.h>
#include <bool.h>
#include <ctype.h>
#include <string.h>
#include <io.h>
int main(){
int x = sin(0.5);
int y = pow(2,3);
int z = abs(12);
myiofunction(7);
exit(0);
}
math.h、bool.h、ctype.h、string.h和io.h都在我的库中定义。我做错了什么?
编辑:我得到的错误信息是:
helloTest.c:10:10: fatal error: 'bool.h' file not found
头文件不会编译到静态库中。它们必须对库和程序都可用。
因此,在编译程序时,请确保指定-I
选项,以便编译器查找库的头文件。
为了让它也使用您自己的标准库,您必须使用-I
选项来包含您的库:
gcc -nostdlib -I/path/to/my/headers/ ...
因此,如果这些文件的头位于./include
中,则可以使用:进行编译
gcc -nostdlib -I./include/ ....
当然,您需要在某个时刻为这些函数提供对象代码。然后,您可以使用ld
和-lgcc
将它们链接在一起,以解析任何内部GCC子例程
GCC链接选项:https://gcc.gnu.org/onlinedocs/gcc/Link-Options.html
您需要编写:
#include "bool.h"
看看:包括语法
如果使用它,无论如何都不会起作用。你必须键入"bool.h"
另一个是-l选项。看看:https://gcc.gnu.org/onlinedocs/cpp/Search-Path.html
如果指定默认位置:-R[PATH]
要包含的库是
#include <stdbool.h>
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- C++从另一个类访问公共静态向量的正确方法是什么
- 在静态库中嵌入类方法
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- CPU 瓶颈;处理具有许多非静态对象的 3D 场景渲染的简单方法
- 尝试了解在导入的静态方法上使用删除方法时的错误
- 如何通过命名空间调用非静态方法
- 如何在没有实例的情况下获取非静态方法的类型?
- 调用从模板派生的类的静态方法,而不指定模板
- 类无法访问自己的私有静态 constexpr 方法 - Clang bug?
- 如何在不使用静态矩形方法的情况下创建 IDOMPathGeometryPtr?
- 如何在 c++ 中异步调用静态方法?
- C++ 将静态方法转换为简单方法
- 静态 std::map instatiation 在类的方法中调用构造函数吗?
- 从另一个标头中的标头调用静态方法
- C++ - 如何在不静态的情况下将回调绑定到类方法?
- C++中静态方法的局部变量范围
- 仅在少数方法(静态或共享库)中解析的外部符号
- LNK2019 在文件中调用静态成员的方法时出错.cpp
- 将方法静态性传播到派生类