2013-02-07 2 views
-2

내 프로젝트에서 OpenCV 라이브러리 기능을 사용하고 싶지 않기 때문에 CvCaptureFromFile(..) 소스 코드를 사용하고 싶습니다. 그래서 F10, F11 키를 눌러 함수 내부로 들어가서 필자가 필요한 것들을 복사하여 C 코드로 변환했습니다. 지금까지 모든 것이 ok이었다.CvCaptureFromFile (..)의 소스 코드

그러나 나는 다음과 같이 icvIntFFMPEG(void)

오류가 나는 함수 내에서 오류를 연결 얻고 실행하려고 할 때 :

오류 1 error LNK2019: unresolved external symbol "__declspec(dllimport) void * __stdcall GetProcAddress(struct HINSTANCE__ *,char const *)" ([email protected]@[email protected]@[email protected]) referenced in function "void __cdecl icvInitFFMPEG(void)" ([email protected]@YAXXZ)
오류 2 error LNK2019: unresolved external symbol "struct HINSTANCE__ * __stdcall LoadLibrary(char const *)" ([email protected]@[email protected]@[email protected]) referenced in function "void __cdecl icvInitFFMPEG(void)" ([email protected]@YAXXZ)

I을 모든 것을 소스 코드 그대로 복사했습니다. 내가 잘못 가고있는 어떤 생각? 이 오류를 어떻게 해결합니까?

UPDATE : 내가 통근 내부에 첫 번째 오류가 없어 그런 this-

extern "C" { 
    #include "defination.h" 
} 

같은 "C"뭔가를 (내가 소스 코드를 대처 한 경우) 헤더 파일을 포장하고, 경우 오류

error LNK2019: unresolved external symbol [email protected] referenced in function _icvInitFFMPEG

+1

당신이 * 필요한 * 것들을 복사했는데 복사 한 내용이 필요하지 않습니다 ... 왜이 "게임"을 재생하는 대신 OpenCV를 직접 사용하지 않으시겠습니까? –

+0

opencv를 사용할 수 없기 때문에 소스 코드를 사용하고 있습니다. – MMH

답변

2

OpenCV의에의 loadLibrary 변화는 FFmpeg를 사용합니다 - 어떤 정말 큰 프로젝트입니다. 그리고 ffmpeg는 커튼 뒤에 다른 도구를 사용합니다. ffmpeg를 사용하려고 할 수도 있지만 ffmpeg에서 소스 코드를 가져 오는 것은 어리석은 일입니다. 그 코드를 사용하여 몇 년을 보냈을 것입니다.

그래서 OpenCV, ffmpeg, Direct3D 등 비디오 입력 라이브러리를 결정하고 사용하십시오.

'외부 라이브러리를 사용할 수 없다'는 생각에 집착하지 마십시오. 외부 라이브러리를 사용할 수 없기 때문에 스스로를 붙들어서는 안됩니다. 그러한 도서관을 개발하는 데는 수년이 걸립니다. 그런 식으로 가고 싶지 않을 것이라고 확신합니다.

+0

도움을 주셔서 감사합니다.하지만 강사로부터 외부 라이브러리를 사용할 수 없다고 말한 것입니다. (:(이 경우 어떤 생각을 어떻게해야합니까?) . – MMH

+4

그런 다음 새로운 운영체제와 컴파일러를 작성하여 컴퓨터를 설계 할 수도 있습니다. 요구 사항을 잘못 이해했을 수 있습니다. 이미지 처리 과정을 진행하는 경우 자연스럽게 알고리즘을 작성해야합니다. 비디오 읽기는 다른 것입니다. 모니터, 컴퓨터 및 컴파일러가 필요한 것과 같은 방식으로 라이브러리를 사용해야합니다. 비디오 디코더를 작성하는 것이 숙제 인 경우, 부정 행위를하지 마십시오. – Sam

+0

나는 속임수가 아닙니다. opencv 또는 다른 라이브러리의 소스 코드를 참조하십시오. 직접 사용할 수 없습니다. 답변에 대한 여러 해답 – MMH

1

글쎄, 당신의 Kernel32.dll 안에있는 LoadLibrary()/GetProcAddress() 함수에 대한 해결되지 않은 호출을받는 것 같습니다. 어떤 IDE/프로젝트 유형을 사용하고 있습니까? 적어도/NODEFAULTLIB가 어딘가에 지정되어 있지 않으면 Kernel32.lib가 기본적으로 링크되어야합니다. 코드를 복사 한 파일에 #pragma comment(lib, "kernel32.lib")을 추가 할 수는 있지만 설정에 대한 정보가 없으면이 문제의 원인을 대답하기 어렵습니다.

+0

안녕하세요, 답장을 보내 주셔서 감사합니다. VS 2010 사용하고 있으며 링크가 있습니다. Kernel32를 편집하십시오.lib에 추가 종속성을 추가하고 #pragma comment (lib, "kernel32.lib")를 추가하지만 여전히 동일한 오류가 발생합니다. – MMH