Встроенный по умолчанию конструктор C ++ Причина. Отказ ссылки: неопределенная ссылка [закрыто]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Встроенный по умолчанию конструктор C ++ Причина. Отказ ссылки: неопределенная ссылка [закрыто]

Сообщение Anonymous »

Я использую библиотеку 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
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»