Я пытаюсь создать сервер с OmniORB, и я хочу создать несколько shared_ptrs. Но когда я делаю это, я получаю следующую ошибку 2
error LNK2019: unresolved external symbol __imp__invalid_parameter referenced in function "public: class std::shared_ptr<struct SharedPtr_i::Vector2> & __cdecl std::array<class std::shared_ptr<struct SharedPtr_i::Vector2>,1000>::operator[](unsigned __int64)" (??A?$array@V?$shared_ptr@UVector2@SharedPtr_i@@@std@@$0DOI@@std@@QEAAAEAV?$shared_ptr@UVector2@SharedPtr_i@@@1@_K@Z)
error LNK2019: unresolved external symbol __imp__CrtDbgReport referenced in function "public: class std::shared_ptr<struct SharedPtr_i::Vector2> & __cdecl std::array<class std::shared_ptr<struct SharedPtr_i::Vector2>,1000>::operator[](unsigned __int64)" (??A?$array@V?$shared_ptr@UVector2@SharedPtr_i@@@std@@$0DOI@@std@@QEAAAEAV?$shared_ptr@UVector2@SharedPtr_i@@@1@_K@Z)
Я осознаю, что большинство этих "неразрешенных внешних символов" вызвано забыванием импортировать файл * .lib. Однако, насколько мне известно, мой код не требует дополнительного файла .lib.
Этот код вызывает у меня проблему:
#include "pch.h"
#include <array>
#include "sharedPtr.hh"
class SharedPtr_i : public POA_SharedPtr
{
private:
struct Vector2
{
float x, y;
};
public:
inline SharedPtr_i() {}
virtual ~SharedPtr_i() {}
void CreateSharedPtr();
};
void SharedPtr_i::CreateSharedPtr()
{
std::array<std::shared_ptr<Vector2>, 1000 > sharedPtrs;
for (int i = 0; i < sharedPtrs.size(); i++)
{
sharedPtrs[i] = std::shared_ptr<Vector2>(new Vector2()); // This line caused the error
}
}
В ходе тестирования я обнаружил, чтоквадратные скобки ([]) вызывают ошибку, но как квадратные скобки вызывают неразрешенную внешнюю ошибку символа?
Любые советы о том, как решить проблему, приветствуются.