gpt4 book ai didi

c++ - ld:在 mac 上找不到体系结构 x86_64 的符号

转载 作者:行者123 更新时间:2023-11-30 05:38:38 25 4
gpt4 key购买 nike

我在 mac 上写了一个玩具程序,当我构建编译器时出现以下错误 ld: symbol(s) not found for architecture x86_64。这似乎是 mac 上的常见错误,但它总是由使用 gcc 构建 cpp 程序引起的。

g++ -v -o assignment_operator_main assignment_operator_main.o
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.4.0
Thread model: posix
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld" -demangle -dynamic -arch x86_64 -macosx_version_min 10.9.0 -syslibroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk -o assignment_operator_main assignment_operator_main.o -lc++ -lSystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/5.1/lib/darwin/libclang_rt.osx.a
Undefined symbols for architecture x86_64:
"CMyString::CMyString(char*)", referenced from:
_main in assignment_operator_main.o
"CMyString::CMyString(CMyString const&)", referenced from:
_main in assignment_operator_main.o
"CMyString::~CMyString()", referenced from:
_main in assignment_operator_main.o
"CMyString::operator=(CMyString const&)", referenced from:
_main in assignment_operator_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)
make: *** [assignment_operator_main] Error 1

下面是我的程序。assignment_operator.h

#ifndef ASSIGNMENT_OPERATOR_H
#define ASSIGNMENT_OPERATOR_H
class CMyString{
public:
CMyString( char* pData = NULL );
CMyString(const CMyString& str );
CMyString& operator=(const CMyString& str);
char* get_m_pData();
~CMyString(void);

private:
char * m_pData;
};
#endif

assignment_operator.cpp

#include "assignment_operator.h"

CMyString::CMyString(char * pData = NULL ){
m_pData= pData
}
CMyString::CMyString(const CMyString& str){
m_pData=new char[strlen(str.get_m_pData())+1]
if( m_pData != NULL )
strcpy(m_pData, str.get_m_pData())
}

CMyString& CMyString::operator=(const CMyString& str){
if( this != &str ){
char* tmp_m_pData;
CMyString tmp(str);
tmp_m_pData=tmp.m_pData;
tmp.m_pData=m_pData;
m_pData=tmp_m_pData;
}
return *this;
}

char* CMyString::get_m_pData(){
return m_pData;
}
CMyString::~CMyString(void){
if( m_pData != NULL )
delete [] m_pData
}

生成文件

assignment_operator_main : assignment_operator_main.o
g++ -v -o assignment_operator_main assignment_operator_main.o
assignment_operator_main.o : assignment_operator_main.cpp assignment_operator.h
g++ -v -c assignment_operator_main.cpp
assignment_operator.o : assignment_operator.cpp assignment_operator.h
g++ -v -c assignment_operator.cpp
clean:
rm assignment_operator_main.o assignment_operator.o

最佳答案

您的程序需要两个目标文件:

assignment_operator_main : assignment_operator_main.o assignment_operator.o
g++ -v -o assignment_operator_main assignment_operator_main.o assignment_operator.o

关于c++ - ld:在 mac 上找不到体系结构 x86_64 的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32631349/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com