-2

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)

ソースコードにあるものをそのままコピーしました。私がどこで間違っているのか考えていますか?このエラーを解決するにはどうすればよいですか?

更新:ヘッダーファイル(ソースコードをコピーしていた場所)を次のようなextern"C"でラップすると-

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

その後、最初のエラーはなくなり、loadLibraryのエラーは次のように変わります。

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

4

2 に答える 2

2

OpenCvはffmpegを使用しています-これは本当に大きなプロジェクトです。そしてffmpegはカーテンの後ろで他のいくつかのツールを使用しています。ffmpegを使用したいと思うかもしれませんが、ffmpeg自体からソースコードを取得するのはばかげています-そのコードをいじるのに何年も費やすでしょう-本当に。

したがって、OpenCV、ffmpeg、Direct3Dなどのビデオ入力ライブラリを決定して使用します。

「外部ライブラリは使用できない」という考えに固執しないでください。外部ライブラリがないと行けません。そのようなライブラリを開発するには何年もかかります-私はあなたがそのように行きたくないと確信しています。

于 2013-02-07T07:57:06.383 に答える
1

さて、Kernel32.dll内にあるLoadLibrary()/ GetProcAddress()関数への未解決の呼び出しを取得しているようです。どのIDE/プロジェクトタイプを使用していますか?少なくとも私が覚えている限り、どこかで/ NODEFAULTLIBが指定されていない限り、Kernel32.libはデフォルトでリンクされているはずです。コードをコピーしたファイルに追加#pragma comment(lib, "kernel32.lib")を試みることはできますが、セットアップに関する詳細情報がないと、これを引き起こしている原因に答えることは困難です。

于 2013-02-07T12:41:06.260 に答える