[LNK2019] 확인할 수 없는 외부 참조입니다.

openCV 사용하다가 lnk2019에러 발생하였다.

맨 처음에는 라이브러리 참조에서 발생한걸로 당연히 알고 

참조 라이브러리 오타 확인하고 또 하고 했는데



"void __stdcall cv::error(class cv::Exception const &)" (?error@cv@@YGXABVException@1@@Z) 외부 기호(참조 위치: "public: class cv::Vec<unsigned char,3> & __thiscall cv::Mat::at<class cv::Vec<unsigned char,3> >(int,int)" (??$at@V?$Vec@E$02@cv@@@Mat@cv@@QAEAAV?$Vec@E$02@1@HH@Z) 함수)에서 확인하지 못했습니다.

"void __stdcall cv::fastFree(void *)" (?fastFree@cv@@YGXPAX@Z) 외부 기호(참조 위치: "public: __thiscall cv::Mat::~Mat(void)" (??1Mat@cv@@QAE@XZ) 함수)에서 확인하지 못했습니다.

"int __stdcall cv::_interlockedExchangeAdd(int *,int)" (?_interlockedExchangeAdd@cv@@YGHPAHH@Z) 외부 기호(참조 위치: "public: __thiscall cv::Mat::Mat(class cv::Mat const &)" (??0Mat@cv@@QAE@ABV01@@Z) 함수)에서 확인하지 못했습니다.



호출 규칙이 _stdcall(/Gz)로 되어 있었다


__cdecl(/Gd)로 변경하여 해결



[error D8016] '/ZI'과(와) '/GL' 명령줄 옵션이 호환되지 않습니다.

 

 

명령줄에 /GL /ZI 옵션이 같이 들어가 있다

 

속성 변경

 

 

변경 후 명령 줄

 

 

/GL 옵션이 사라짐

 

참고

https://msdn.microsoft.com/ko-kr/library/xbf3tbeh.aspx

 

Visual Studio 개발 환경에서 이 컴파일러 옵션을 설정하려면

 

1. 프로젝트 속성 페이지 대화 상자를 엽니다.  프로젝트 속성 사용 를 참조하십시오.

2. 구성 속성 폴더를 선택합니다. 

3. 일반 속성 페이지를 클릭합니다. 

4. 전체 프로그램 최적화  속성을 수정합니다.

 

 

 

 

 

'and so on > error' 카테고리의 다른 글

[LNK2019] 확인할 수 없는 외부 참조입니다.  (1) 2015.03.13
GetLastError 1406  (0) 2014.05.19
RegisterTaskDefinition 80070534 error  (0) 2014.03.04
버그. 에러, 예외  (0) 2013.01.25
F5 실행 Ctrl F5 결과 값 차이 발생  (0) 2012.12.07

GetLastError 1406

ERROR_TLW_WITH_WSCHILD
1406 (0x57E)

Cannot create a top-level child window.

GetDialogParam 할때 발생한 에러였다.


구글 검색 결과 자식 다이얼로그의 속성을 popup으로 변경하면 된다고 나오고, 

popup으로 변경하면 정상적으로 동작 한다. 


하지만 원하는 결과는 부모 다이얼로그에 자식 다이얼로그를 띄우는 거라서 

속성을 child로 유지해야 했다.


내 프로젝트에서 해당 에러가 발생한 원인은 

부모 다이얼로그의 핸들을 찾지 못해서 였다. 


createDialogParam(HINSTANCE hInstance, LPCSTR lpTemplateName, HWND hWndParent, DLGPROC lpDialogFunc, LPARAM dwInitParam);


이 부분 인자를 잘못 넣어주고 있었다.


hWndParent의 값을 넣어줄때 올바른 값을 넣어주고 있는지 확인이 필요함!!

RegisterTaskDefinition 80070534 error

작업 스케줄러를 이용하기 위하여 MSDN에서 예제를 찾아보았다.


Logon Trigger Example (C++)

http://msdn.microsoft.com/en-us/library/aa381911(v=vs.85).aspx



이 샘플 코드를 실행하면 




아래와 같은 80070534 에러 코드가 발생한다.


The ITaskFolder::RegisterTaskDefinition method returns error 80070534 when called by the System account with the user parameter equal to NULL, the password parameter equal to NULL, and the logonType parameter equal to TASK_LOGON_SERVICE_ACCOUNT.


이는 로그온 트리거를 등록할때

사용자 계정이 등록되어 있지 않아서 발생한다.


예제에서는

특정 사용자가 로그온 할때 동작시키기 위하여


 hr = pLogonTrigger->put_UserId( _bstr_t( L"DOMAIN\\UserName" ) );

 

가 포함되어 있어서, 저 "DOMAIN\\UserName" 부분을 실제 실행시키려는 컴퓨터의 계정 이름으로 변경하거나,

모든 사용자가 로그온할 때 사용시키기를 원하면 put_UserId를 입력시키지 않아도 된다.



버그. 에러, 예외

버그(Bug) : 버그는 간단히 말해 프로그래머에 의한 에러이다. 예를 들어, 비관리 C++로 프로그래밍하는 경우, NULL 포인터를 호출하거나, 배열에서 오버플로우가 발생하거나, 할당된 메모리를 지우지 않은 경우(결국 메모리 누출로 이어지는)가 버그에 해당된다.

에러(error) : 에러는 버그와 달리 일반적으로 응용 프로그램의 사용자에 의해서 발생한다. 예를 들어, 사용자가 주민등록번호를 입력하는 난에 이상한 문자열을 입력하는 경우가 있을 수 있다. 프로그래머가 이러한 경우를 대비해서 적절한 예외 처리를 하지 않았다면 에러가 발생한다.

예외(exception) : 예외는 일반적으로 런타임 오류와 관련된 것으로서, 예방하기가 어렵거나 불가능한 것들이다. 더 이상 존재하지 않는 데이터베이스에 연결하려고 한다거나, 손상된 파일을 열려고 하거나, 오프라인 상태인 머신에 접속하려고 하는 경우 예외가 발생할 수 있다. 프로그래머나 사용자는 이러한 '예외적인' 경우에 대처하기가 어렵다. 


http://hermeslog.tistory.com/72

'and so on > error' 카테고리의 다른 글

GetLastError 1406  (0) 2014.05.19
RegisterTaskDefinition 80070534 error  (0) 2014.03.04
F5 실행 Ctrl F5 결과 값 차이 발생  (0) 2012.12.07
[SVN] checkout 하기  (0) 2012.12.04
[LNK2001] 외부 기호를 확인할 수 없습니다.  (0) 2012.11.26

F5 실행 Ctrl F5 결과 값 차이 발생

F5는 디버깅 모드로 시작

Ctrl+F5는 디버깅 모드 하지 않고 시작


인데 문제가 발생했다 


F5로 하면 실행이 잘되고

Ctrl+F5로 하면 원하는 값이 나오지 않는 것이다


검색해보니

초기화 문제가 발생 해서 나타났다고 

어떤 사람이 비슷한 질문을 올렸다 

휴 찾았다 그래도 


그리고 추가 답변


F5는 그냥 실행되는 것이고 
Ctrl + F5는 메모리 침범이 일어났을 경우에 어느정도 더미를 붙여 놓아서 메모리 에러가 발생되지 
않도록 하는 기능을 합니다.(VC++에서 지원)그러니까 F5와 Ctrl + F5를 실행시켰을 때 결과가 다르 
다면 자신의 코드중에 메모리 관련 실수를 했다는 것을 추론할 수 있죠. 덤으로 Debug와 Realse와는 
좀 많이 다릅니다. 돈주는 파는거라면 최종 버전은 언제나 Release버전으로 해야죠. ^^



질문 출처

http://www.gpgstudy.com/forum/viewtopic.php?t=9179





'and so on > error' 카테고리의 다른 글

RegisterTaskDefinition 80070534 error  (0) 2014.03.04
버그. 에러, 예외  (0) 2013.01.25
[SVN] checkout 하기  (0) 2012.12.04
[LNK2001] 외부 기호를 확인할 수 없습니다.  (0) 2012.11.26
[LNK2019] inet_addr 사용 오류  (0) 2012.10.18

[SVN] checkout 하기




1.svn에 등록되어 있는 아무 프로젝트를 연다


2.  [보기] -[Repository Explorer] 선택




3. 체크 아웃 원하는 폴더 선택 후  버튼 누르기


4. 원하는 경로 적으면 완료


[LNK2001] 외부 기호를 확인할 수 없습니다.

헤더 파일에 


전역변수를 extern 으로 선언 하고 ( 정의는 하지 않은 상태) 


- test.h

 #ifndef __TEST__

#define __TEST__


#include <Windows.h>

#ifdef EXT_GLOBAL

#define EXT

#else

#define EXT extern

#endif


EXT HINSTANCE hInst;


함수들 선언 


#endif



.cpp 에서 정의를 하지 않았을때 발생하는 오류 


.cpp에서 hInst를 정의 해주면 된다.


- test.cpp

 HINSTANCE hInst = NULL;




[LNK2019] inet_addr 사용 오류

error LNK2019: __imp__inet_addr@4 외부 기호(참조 위치: "int __stdcall License(struct HWND__ *,unsigned int,unsigned int,long)" (?License@@YGHPAUHWND__@@IIJ@Z) 함수)에서 확인하지 못했습니다.



라이브러리 추가 안해서 생긴 오류

 #pragma comment(lib, "Ws2_32") 

추가하여 해결 


LNK2019 에러 났을 경우 라이브러리 확인해보기!


* 특히 디버그 했을때는 실행 됐는데,

릴리즈 일때 실행 되지 않았을 경우 릴리즈에서 라이브러리 추가 안됐을 확률이 높다 




LINK : fatal error LNK1104: 'libboost_regex-vc100-mt-gd-1_51.lib' 파일을 열 수 없습니다.






라이브러리 경로를 추가 안해줘서 생기는 오류!!


저 위치에 라이브러리 위치 추가하기 

'and so on > error' 카테고리의 다른 글

버그. 에러, 예외  (0) 2013.01.25
F5 실행 Ctrl F5 결과 값 차이 발생  (0) 2012.12.07
[SVN] checkout 하기  (0) 2012.12.04
[LNK2001] 외부 기호를 확인할 수 없습니다.  (0) 2012.11.26
[LNK2019] inet_addr 사용 오류  (0) 2012.10.18