【问题标题】:Source code of CvCaptureFromFile(..)CvCaptureFromFile(..) 的源代码
【发布时间】:2013-02-07 06:53:45
【问题描述】:

我想使用 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

【问题讨论】:

  • 你复制了需要的东西,但没有复制你复制的东西需要的东西......你为什么不直接使用OpenCV而不是玩这些“游戏” “?
  • 我不能使用opencv这就是我使用源代码的原因..

标签: c++ c opencv video-capture


【解决方案1】:

OpenCv 使用 ffmpeg - 这是一个非常大的项目。 ffmpeg 在幕后使用了其他一些工具。您可能想使用 ffmpeg,但从 ffmpeg 本身获取源代码是愚蠢的 - 您将花费数年时间摆弄该代码 - 真的。

所以,决定一个视频输入库 - 无论是 OpenCV、ffmpeg、Direct3D 还是其他什么,并使用它。

不要执着于“你不能使用外部库”的想法,因为你不能没有它们。开发这样一个库需要数年时间 - 我很确定您不想那样做。

【讨论】:

  • 感谢您的帮助,但正如我的导师所说,我不能使用外部库 :( :( 在这种情况下,我应该如何继续工作..
  • 那么你可能还想写一个新的操作系统、一个编译器并设计一台计算机。您可能对要求的理解有误。如果您为图像处理课程工作,您自然会为自己编写算法。但视频阅读是另一回事。你需要使用一个库,就像你需要一台显示器、一台计算机和一个编译器一样。如果您的作业是编写视频解码器,请不要作弊。
  • 我没有作弊我被允许查看来自 opencv 或任何其他库的源代码..我不能直接使用它们..无论如何感谢您的回答。
【解决方案2】:

好吧,看来您对 Kernel32.dll 中的 LoadLibrary()/GetProcAddress() 函数的调用未解决。您使用的是什么 IDE/项目类型?除非在某处指定 /NODEFAULTLIB,否则默认情况下应链接 Kernel32.lib,至少据我所知。您可以尝试将#pragma comment(lib, "kernel32.lib") 添加到您复制代码的文件中,但如果没有有关您的设置的更多信息,很难回答是什么原因造成的。

【讨论】:

  • 您好,感谢您的回复。我正在使用 VS 2010,我已将 Kernel32.lib 链接到其他依赖项中,并添加了 #pragma comment(lib, "kernel32.lib") 但仍然出现相同的错误。
猜你喜欢
  • 1970-01-01
  • 2017-01-10
  • 2017-03-12
  • 2018-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多