내 코드는연결 원인, COORD의 벡터를 생성하는 오류
static std::vector<COORD> m_vsOutputBuffer;
:
output.obj : error LNK2001: unresolved external symbol "private: static class std::vector<struct _COORD,class std::allocator<struct _COORD> > output::m_vsOutputBuffer" ([email protected]@@[email protected][email protected]@[email protected][email protected]@@[email protected]@@[email protected]@A)
이 문제 줄 수 있어야합니다
나는 몇 시간 동안 갇혀 있었다.
마지막으로
나는 그것이 (링커 오류)는 일반적으로 종속성 문제로 인해 발생한다는 것을 읽었습니다.
COORD
을
int
으로 변경하면 링커 오류가 사라집니다.
그러나 여기서 그것은 단지
필자는 그렇게 생각하지 않았던 방식으로 함수를 사용함으로써 발생할 수 있다고 읽었습니다. 나는 그것이 처리되어야하는 방법이라고 생각한다. TYPE
을 변경합니다.
COORD
s; 또는 COORD
S에 대한 내용이 앞으로 선언되거나 output.cpp에서 제대로 참조됩니다.
편집 : int로 변경하면 컴파일러 오류가 발생하여 링커에 결코 충돌하지 않습니다. 지금은 다시 아무것도
과 CPP 파일입니다 :
#include "stdafx.h"
#include "output.h"
#include <vector>
static std::vector<int> m_vsOutputBuffer;
output::output(void)
{
}
void output::addToken(COORD sCoordinate) //mark a coord in the buffer as needing refreshed
{
m_vsOutputBuffer.push_back(sCoordinate);
}
void output::drawTokens() //release the outputbuffer the the output window
{
for (unsigned int iii = 0; iii < m_vsOutputBuffer.size(); iii++)
{
putAtLocation(m_vsOutputBuffer[iii], field::checkHit(m_vsOutputBuffer[iii]));
}
}
void output::putAtLocation(COORD sCoordinate, char chIcon) //outputs a single character to the console
{
DWORD dwNumWritten = 0;
LPDWORD lpdNumWritten = &dwNumWritten;
WriteConsoleOutputCharacter(
GetStdHandle(STD_OUTPUT_HANDLE), //***repeatedly getting this handle may end up a bottleneck
LPCTSTR(&chIcon),
1,
sCoordinate,
lpdNumWritten
);
}
output::~output(void)
{
}
도 내가 이걸 발견 :
http://www.cplusplus.com/forum/general/6111/ 그래서 나는 CPP 파일에 정적 문을 이동 시도하고 컴파일 및 실행. 멤버 변수가 아닙니다. 그래서 어떻게 든 벡터를 선언 할 필요가있다. (선언문이 헤더 파일에 정적 객체도 생성하기 전에)
오류 C2371 : 'm_vsOutputBuffer': 재정의; 기본 유형이 다른 경우 을 추가하면 오류가 발생합니다. 나는 더 많은 것을 읽은 후에 단지 벡터를 선언하는 것이 불가능하다고 생각한다. – Zak
은 미리 컴파일 된 헤더가 생성 된 곳과 .cpp가 컴파일되는 'COORD'가 어떻게 든 다른 'COORD'가있는 것 같습니다. MSVC에서 일하면서 몇 년이 지 났으므로 녹슨 느낌이 들었습니다 ... 미리 컴파일 된 헤더를 일시적으로 사용하지 않도록 설정하고 어떤 일이 발생하는지 확인하려고했습니다. 또한, AFAIR, 어쨌든 머리글을 포함하고 stdafx로 계산하지 않는 것이 좋습니다. – davka
와우, 잘 PCH를 사용하지 않도록 설정하고, 빌드하고, 활성화하고, 여전히 빌드합니다 .... 정말 알고 싶습니다. 이것은있을 수 있었다. – Zak