Я использую библиотеку AWS-SDK-CPP для доступа к S3, но столкнулся с следующей ошибкой связывания:
mycode: < /p>
#include "aws/core/Aws.h"
#include "aws/core/auth/AWSCredentialsProvider.h"
#include "aws/s3/S3Client.h"
#include "aws/s3/model/GetObjectRequest.h"
#include "aws/s3/model/GetObjectResult.h"
void test() {
Aws::S3::Model::GetObjectRequest request;
request.SetBucket(bucket_);
request.SetKey(filename_);
request.SetRange(range_spec);
auto outcome = s3_client_->GetObject(request);
if (!outcome.IsSuccess()) {
// todo:
}
}
< /code>
Я получил ошибку: < /p>
/titan_new/titan/src/oss.cc:323: undefined reference to `Aws::S3::Model::GetObjectRequest::GetObjectRequest()'
< /code>
The Aws :: S3 :: Model :: GetObjectrecest по умолчанию определяется таким: < /p>
class GetObjectRequest : public S3Request
{
public:
AWS_S3_API GetObjectRequest() = default; // =default and in the class, inline.
}
< /code>
Насколько я знаю, когда в определении класса определяется функция, а не определяется отдельно, конструктор неявно встроен. В этом случае компилятор C ++ не будет генерировать символ для него.$ nm _deps/awssdkcpp-build/generated/src/aws-cpp-sdk-s3/libaws-cpp-sdk-s3.a -C | grep GetObjectRequest::
0000000000000000 W Aws::S3::Model::GetObjectRequest::GetObjectRequest(Aws::S3::Model::GetObjectRequest const&)
0000000000000000 W Aws::S3::Model::GetObjectRequest::GetObjectRequest(Aws::S3::Model::GetObjectRequest const&)
0000000000000000 n Aws::S3::Model::GetObjectRequest::GetObjectRequest(Aws::S3::Model::GetObjectRequest const&)
0000000000000000 W Aws::S3::Model::GetObjectRequest::~GetObjectRequest()
0000000000000000 W Aws::S3::Model::GetObjectRequest::~GetObjectRequest()
0000000000000000 W Aws::S3::Model::GetObjectRequest::~GetObjectRequest()
0000000000000000 n Aws::S3::Model::GetObjectRequest::~GetObjectRequest()
0000000000000000 W Aws::S3::Model::GetObjectRequest::KeyHasBeenSet() const
0000000000000000 W Aws::S3::Model::GetObjectRequest::BucketHasBeenSet() const
0000000000034540 T Aws::S3::Model::GetObjectRequest::SerializePayload() const
0000000000000000 W Aws::S3::Model::GetObjectRequest::GetServiceRequestName() const
0000000000034562 T Aws::S3::Model::GetObjectRequest::AddQueryStringParameters(Aws::Http::URI&) const
000000000003560c T Aws::S3::Model::GetObjectRequest::GetEndpointContextParams() const
0000000000034e46 T Aws::S3::Model::GetObjectRequest::GetRequestSpecificHeaders() const
0000000000035730 T Aws::S3::Model::GetObjectRequest::ShouldValidateResponseChecksum() const
000000000003574a T Aws::S3::Model::GetObjectRequest::GetResponseChecksumAlgorithmNames() const
0000000000000000 W Aws::S3::Model::GetObjectRequest::GetKey() const
0000000000000000 W Aws::S3::Model::GetObjectRequest::GetBucket() const
< /code>
Позвольте мне снова запустить NM, на этот раз ориентируясь на статическую библиотеку, созданную из моего файла .cpp. Вы заметите, что символ для AWS :: S3 :: Model :: GetObjectRevest :: getObjectRevest () появляется как тип U (неопределенного) в выходе.$ nm libmylogic.a -C | grep GetObjectRequest::
0000000000000000 W Aws::S3::Model::GetObjectRequest::SetKey(std::string const&)
0000000000000000 W Aws::S3::Model::GetObjectRequest::SetRange(std::string const&)
0000000000000000 W Aws::S3::Model::GetObjectRequest::SetBucket(std::string const&)
U Aws::S3::Model::GetObjectRequest::GetObjectRequest() # @@@@ note this line
0000000000000000 W Aws::S3::Model::GetObjectRequest::~GetObjectRequest()
0000000000000000 W Aws::S3::Model::GetObjectRequest::~GetObjectRequest()
0000000000000000 W Aws::S3::Model::GetObjectRequest::~GetObjectRequest()
0000000000000000 n Aws::S3::Model::GetObjectRequest::~GetObjectRequest()
< /code>
Конструктор для getobjectrecest не определяется нигде, что заставляет мой исполняемый файл сбой с неопределенной ошибкой ссылки при связывании с этой библиотекой. Я хотел бы понять, в чем заключается проблема - может ли кто -то, что испытал в C ++, помогите мне устранить это?
Подробнее здесь: https://stackoverflow.com/questions/796 ... -reference
Встроенный по умолчанию конструктор C ++ Причина. Отказ ссылки: неопределенная ссылка [закрыто] ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Встроенный по умолчанию конструктор C ++ Причина. Отказ ссылки: неопределенная ссылка
Anonymous » » в форуме C++ - 0 Ответы
- 4 Просмотры
-
Последнее сообщение Anonymous
-
-
-
Неопределенная ссылка на * на этапе ссылки при использовании xmake [дубликат]
Гость » » в форуме C++ - 0 Ответы
- 110 Просмотры
-
Последнее сообщение Гость
-