0

FaceTracker.cpp と呼ばれる C++ のコードと、いくつかの分析と統計を行う Matlab のその他のコードを作成しました。

私がする必要があるのは、押されたときに FaceTracker を呼び出すボタンを matlab に追加することです。次のコマンドを使用しようとしました。

 system (['FaceTracker.exe <' nameOfVideo]);

しかし、うまくいきません。FaceTracker.exe GUI を開き、停止します。(インターネット エクスプローラーやその他のプログラムが時々ハングする場合と同様)、"FaceTracker.exe が動作を停止しました。

コマンド プロンプトから .exe を実行しようとすると、次のエラーが表示されました。

  Assertion Faile: Type == IO::TRACKER ... Debug error! R6010 - abort() has been called.

回答\他のサイトから私が理解したことから、ライブラリを静的にリンクする必要があるということです。次の変更を加える必要があるサイトを読みました。

 The CRT:
 • Configuration Properties -> C/C++ -> Code Generation: Where it reads Runtime   Library, change to Multi-Threaded (/MT).

 The manifest must go:
 • Configuration Properties -> Manifest Tool -> Input and Output: Where it reads Embed Manifest, change to No.

しかし、それを行うと (/MT に変更)、次のエラーが発生し始めます。

1>  Generating Code... 1>LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library 1>libcpmtd.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 1>Tracker.obj : error LNK2019: unresolved external symbol __CrtDbgReportW referenced in function "public: void
__thiscall FACETRACKER::Tracker::Load(char const *)" (?Load@Tracker@FACETRACKER@@QAEXPBD@Z) 1>libcpmtd.lib(stdthrow.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 1>libcpmtd.lib(cout.obj) : error LNK2001: unresolved external symbol
__CrtDbgReportW 1>libcpmtd.lib(cin.obj) : error LNK2001: unresolved external symbol __CrtDbgReportW 1>IO.obj : error LNK2001: unresolved external symbol __CrtDbgReportW 1>Patch.obj : error LNK2001: unresolved external symbol __CrtDbgReportW 1>PAW.obj : error LNK2001: unresolved external symbol __CrtDbgReportW 1>PDM.obj : error LNK2001: unresolved external symbol __CrtDbgReportW 1>CLM.obj : error LNK2001: unresolved external symbol __CrtDbgReportW 1>FaceTracker.obj : error LNK2001: unresolved external symbol __CrtDbgReportW 1>FCheck.obj : error LNK2001: unresolved external symbol __CrtDbgReportW 1>FDet.obj : error LNK2001: unresolved external symbol __CrtDbgReportW 1>libcpmtd.lib(cin.obj) : error LNK2001: unresolved external symbol
__free_dbg 1>libcpmtd.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol __free_dbg 1>Tracker.obj : error LNK2001: unresolved external symbol __free_dbg 1>libcpmtd.lib(xdebug.obj) : error LNK2001: unresolved external symbol __free_dbg 1>libcpmtd.lib(locale0.obj) : error LNK2001: unresolved external symbol __free_dbg 1>libcpmtd.lib(cout.obj) : error LNK2001: unresolved external symbol
__free_dbg 1>IO.obj : error LNK2001: unresolved external symbol __free_dbg 1>Patch.obj : error LNK2001: unresolved external symbol __free_dbg 1>PAW.obj : error LNK2001: unresolved external symbol __free_dbg 1>PDM.obj : error LNK2001: unresolved external symbol __free_dbg 1>CLM.obj : error LNK2019: unresolved external symbol __free_dbg referenced in function "private: void __thiscall std::_Yarn<char>::_Tidy(void)" (?_Tidy@?$_Yarn@D@std@@AAEXXZ) 1>FaceTracker.obj : error LNK2001: unresolved external symbol
__free_dbg 1>FCheck.obj : error LNK2001: unresolved external symbol __free_dbg 1>FDet.obj : error LNK2001: unresolved external symbol __free_dbg 1>libcpmtd.lib(xdebug.obj) : error LNK2019: unresolved external symbol __malloc_dbg referenced in function "void * __cdecl operator new(unsigned int,struct std::_DebugHeapTag_t const &,char
*,int)" (??2@YAPAXIABU_DebugHeapTag_t@std@@PADH@Z) 1>libcpmtd.lib(locale0.obj) : error LNK2001: unresolved external symbol __malloc_dbg 1>libcpmtd.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol __malloc_dbg 1>libcpmtd.lib(_tolower.obj) : error LNK2019: unresolved external symbol __calloc_dbg referenced in function __Getctype 1>C:\Users\wew\Documents\Jam3a\PROJECT-2012!!\FindSymetryInFaces\FaceTracker\Debug\FaceTracker.exe : fatal error LNK1120: 4 unresolved externals

助言がありますか?すべてのコンピューターで FaceTracker.exe を使用できるようにするには、どうすればよいですか?

さらに、matlab から呼び出したときにプログラムが開くのに、Hangs\stops が動作するのはなぜですか? 少し早いですがお礼を。

4

3 に答える 3

0

アプリケーションでは、Visual C ++コンパイラ全体をインストールする必要はなく、ランタイムライブラリだけをインストールする必要があります。Microsoftには、このランタイムライブラリを任意のコンピュータに追加できる無料の再配布可能ファイルがあります。Visual C ++インストールパスにvcredist_x86.exeを見つけるか、http://www.microsoft.com/en-us/download/details.aspx? id=8328からダウンロードできます。

于 2012-05-01T13:15:43.673 に答える
0

このexeファイルは他のライブラリに依存していると思います。それらをシステム パラメータ PATH のいずれかのディレクトリにコピーする必要があります。または、プロジェクトをビルドするときに静的リンク オプションを使用できます。

于 2012-04-30T19:53:43.950 に答える
0

これは、ほとんどの場合、デバッグとリリース、または mt が有効になっているかどうかとは何の関係もありません。コマンドラインからバイナリを使用するだけで、matlab 拡張機能を作成していません。コマンド ラインから入力したときにプログラムが動作する場合、メモリが不足していない限り (ほとんどありませんが)、Matlab から呼び出されたときにも動作するはずです。

の内容を調べます。.

['FaceTracker.exe < ' InputVid]

...そして、文字列をコマンド ライン (Matlab ではなくシステム) に直接コピー アンド ペーストして、エラーを再現できるかどうかを確認します。exeがファイル文字列を適切に処理していないため、エラーが発生する可能性が最も高くなります。

最も単純なシナリオを作成するために、inputvid、calling m ファイル、FaceTracker.exe を作業ディレクトリに配置してみてください。それが機能する場合は、入力 vid を別のディレクトリに配置して、そこからバグ ハントを行うことで、事態をより複雑にします。

頑張ってください!

于 2012-04-30T19:16:23.110 に答える