헤더 파일에 선언 된 테스트 클래스가 있고 별도의 파일에 정의되어 있습니다. 클래스는 Windows에서 다르게 컴파일해야하므로 #if defined (_WINDOWS_)
을 사용합니다. #if defined (_WINDOWS_)
도 포함하는 cpp 파일을 컴파일하면 다른 파일에 정의되어 있지만 심볼 _WINDOWS_
이 정의되지 않은 것처럼 컴파일됩니다.컴파일 타임 기호는 # 정의되었지만 #ifdef에는 표시되지 않습니다.
Error Code : error lnk2019 unresolved external symbol public
소스 코드
Error Code : error lnk2019 unresolved external symbol public
참고
// test.h
class Test
{
public:
#if defined (_WINDOWS_)
void printwindow();
#endif
void notwindows();
};
//test.cpp
#include "test.h"
#if defined (_WINDOWS_)
void Test::printwindow()
{
cout << "i am windows ";
}
#endif
void test::notwindows()
{
cout << " not windows " ;
}
//main.cpp
#include "windows.h"
#include "test.h"
void main()
{
test t1 ;
t1.printwindow() // OK I have declared function so my _WINDOWS_ is available but when i run it i get
}
: 내가 코드를 컴파일 할 때, 나는 다음과 같은 오류를 얻고 내가 직접 함수를 정의 할 경우 어떤 문제
// test.h
class Test
{
public:
#if defined (_WINDOWS_)
void printwindow(){couT << "i am window" }
#endif
void notwindows();
};
없이 작동
하지만이 방법이 마음에 들지 않습니다. 필자는 그것들을 별도의 파일 (h와 cpp)로 정의하는 것을 선호한다.
죄송합니다.이 질문은 의미가 없습니다. –
@CodyGray : 질문을하기 위해 기계 번역기를 사용해야했던 것 같습니다. 필자는 Windows에서 컴파일 할 때 특정 기능을 추가로 원합니다. – kkm
이것이 실제 코드입니까? 그런 다음 누락 된'#include','cout' 대신'couT' 사용,'using namespace std;'(또는 std :: cout 사용) 및't1 호출시 추가 콜론 . : printwindow()', 줄 끝 부분에 누락 된 세미 콜론은 컴파일하는 동안 모두 문제를 일으킨다. –
tinman