Xcode"体系结构x86_64的未定义符号"
Xcode “Undefined symbols for architecture x86_64”
这是我第一次体验编程,在创建库时遇到了一些问题。当我运行该问题时,会出现以下单词:
Undefined symbols for architecture x86_64:
"stampa(int const*, int)", referenced from:
_main in main.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
现在我在这里附上书面算法,希望能得到帮助。
文件main.cpp
:
#include <iostream>
#include "libarray.h"
#define N 5
using namespace std;
int main (){
int v[N]={0};
int R=0;
stampa (v, R);
system("pause");
return 0; }
文件library.cpp
:
#include <iostream>
#include "libarray.h"
using namespace std;
void stampa (int v[], int R) {
do{
cout << "Inserire riempimento: ";
cin >> R;
}while ( R>N );
cout << "nInserire elementi:n";
for ( int i=0; i<R; i++){
cout << " - elemento indice " << i << ": ";
cin >> v[i];
} }
文件libarray.h
:
#define N 5
void stampa (const int v[], int R);
您在libarray.h
中声明的函数将const int v[]
作为第一个参数。
您在library.cpp
中定义的那个将int v[]
作为第一个参数。
它们不是相同的类型,因此也不是相同的函数重载。您永远不会从标头定义函数,错误消息会告诉您这一点。
需要用const
定义版本,因为这是用于调用stampa (v, R);
的版本,因为它是在main.cpp
中声明的stampa
的唯一重载。
保持一致,并在头文件和实现文件中的函数声明和定义中使用相同的类型。由于您打算修改v
的元素,所以它不能是const
。因此,在头文件中,更改
void stampa (const int v[], int R);
至
void stampa (int v[], int R);
这是一个链接错误。我的意思是,你还没有在项目设置中包含library.cpp。
右键单击左上角的项目,然后选择将文件添加到"…"。
相关文章:
- 编译C++时未定义的引用
- vscode g++链路故障:体系结构x86_64的未定义符号
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 不知道某个东西是否被忽略会引入未定义的行为吗
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 未定义的引用在哪里
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- c++11评估顺序(未定义的行为)
- 使用mysql c++连接器的未定义引用
- 从python调用openMP共享库时,未定义opnMP函数
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号
- Cmake 链接问题:未定义对 Button::mousePressEvent(QGraphicsSceneMouseE
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 具有外部"c"和程序集的未定义函数
- 此增量后语句是否会导致未定义的行为?
- 尝试调用 .h 文件中定义的变量时出现变量未定义错误
- 在C++中使用内联方法时出现未定义的符号错误
- 对 Scalar ::Scalar() 的未定义引用