Исходный код CvCaptureFromFile (..)

Я хочу использовать исходный код CvCaptureFromFile(..) Я не хочу использовать библиотечные функции OpenCV в моем проекте. Поэтому я вошел в функцию, нажав F10, F11, и скопировал нужные мне вещи и преобразовал их в C-код. До сих пор все было хорошо.

Но когда я пытался запустить, я получаю ошибку связывания внутри функции icvIntFFMPEG(void)

ошибки заключаются в следующем:

Ошибка 1 error LNK2019: unresolved external symbol
"__declspec(dllimport) void * __stdcall GetProcAddress(struct
HINSTANCE__ *,char const *)"(__imp_?GetProcAddress@@YGPAXPAUHINSTANCE__@@PBD@Z) referenced in
function "void __cdecl icvInitFFMPEG(void)" (?icvInitFFMPEG@@YAXXZ)

Ошибка 2 error LNK2019: unresolved external symbol "struct HINSTANCE__
* __stdcall LoadLibrary(char const *)" (?LoadLibrary@@YGPAUHINSTANCE__@@PBD@Z) referenced in function "void
__cdecl icvInitFFMPEG(void)" (?icvInitFFMPEG@@YAXXZ)

Я скопировал все как есть в исходном коде. Есть идеи, где я иду не так? Как мне решить эту ошибку?

ОБНОВИТЬ: ЕСЛИ я обертываю файл заголовка (где я копировал исходный код) внутри внешнего «C», что-то вроде этого

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

Тогда первая ошибка исчезнет, ​​и ошибка с loadLibrary изменится на

error LNK2019: unresolved external symbol __imp__LoadLibrary@4 referenced in function _icvInitFFMPEG

-2

Решение

OpenCv использует ffmpeg — это действительно большой проект. А ffmpeg использует некоторые другие инструменты за шторами. Возможно, вы захотите использовать ffmpeg, но брать исходный код из самого ffmpeg глупо — вы потратите годы, возясь с этим кодом — действительно.

Итак, выберите библиотеку видеовходов — будь то OpenCV, ffmpeg, Direct3D или что-то еще, и используйте ее.

Не держитесь за идею, что «вы не можете использовать внешние библиотеки», потому что вы не можете обойтись без них. На создание такой библиотеки уходят годы — я уверен, что вы не хотите идти по этому пути.

2

Другие решения

Что ж, похоже, ваши неразрешенные вызовы функций LoadLibrary () / GetProcAddress () находятся внутри Kernel32.dll. Какой IDE / тип проекта вы используете? Kernel32.lib должен быть связан по умолчанию, если только / NODEFAULTLIB не указан где-то, по крайней мере, насколько я помню. Вы можете попробовать добавить #pragma comment(lib, "kernel32.lib") в файл, в который вы скопировали код, но без дополнительной информации о вашей настройке трудно ответить, что является причиной этого.

1

По вопросам рекламы [email protected]