在c++中调用extern(静态)函数
calling an extern (static) function in c++
我想把一些c++函数放在一起。我有一个包含以下两个函数的文件:
double fun1(double *x, int y, double *z){
....
}
和
static
double fun2(double a, double b, int c){
...
}
现在,fun1调用fun2。我想在一个单独的文件(separate.cpp
)中使用fun1,所以我这样做:
extern double fun1(double *x, int y, double *z);
在该(separate.cpp
)文件的开头。
问题:我是否也应该写
在separate.cpp
开头,如果是,如何?(我也应该包括static
关键字在那里,旁边的extern
?)
我认为我的主要问题是我以前从未使用过static
函数,所以我真的不知道如何处理它们。
当前,代码编译,但加载后我得到:
unable to load shared object '/R/x86_64-pc-linux-gnu-library/3.1/abc/libs/abc.so':
/R/x86_64-pc-linux-gnu-library/3.1/abc/libs/abc.so: undefined symbol: _Z6fun1PdiS_Pi
不,您不需要在单独的文件中声明静态函数,因为那里的代码不需要知道它的任何信息。实际上,使函数成为静态的目的是使它在定义它的文件中保持本地:它不能在其他文件中被视为外部函数。
您得到的错误消息是关于未找到的fun1。编译&时必须提供包含fun1的目标文件。separate.cpp链接。
相关文章:
- 给定一个C++嵌套的私有结构类型,是否有从文件范围静态函数访问它的策略
- 检查编译时是否存在静态函数
- 名称隐藏对静态函数继承的实例使用
- 如果 C 函数仍然可以间接执行(通过回调函数),那么将它声明为静态函数是否是一种不好的做法?
- 类中静态函数C++意外结果
- 在工人类中使用不同类的静态函数进行实验
- 类 Referention 中C++回调函数引用非静态函数
- 指向模板上下文中的成员函数或静态函数的指针
- 如何检测 Clang AST C++中的静态函数
- 内联asm编译器屏障(内存阻塞器)是算作外部函数,还是算作静态函数调用
- 如何在静态函数中使用成员函数数组
- (2 问题)"类"类型重新定义(即使 #pragma 一次),以及静态函数内的静态成员对象初始化?
- 生成代码(在编译时)以调用模板的每个实例化的静态函数
- C++无法访问或使用静态函数
- 如何将 cpp 文件中的静态函数公开给其他文件
- 将函数的引用设置为其他 c++ 文件中的非静态函数
- 方法的静态函数的等价性
- 扩展包含静态函数的类
- 非静态函数可以访问静态变量吗?
- 调用非静态函数作为谓词?