2016-04-13 37 views
0

Visual Studio 2010でLive555テストプログラムをコンパイルしようとしましたが、これを実行できませんでした。Live555とVisual Studio 2010

私はBasicUsageEnvironment.lib
何の問題

せずにライブラリをコンパイル groupsock.lib
liveMedia.lib
UsageEnvironment.lib

が、それはテストプログラムに来ます、私はちょうどどこにも行けなかった。ここには、mediaServerのファイルをコンパイルするときのコンパイラのメッセージがあります。

誰もこの問題が発生しましたか?

error LNK2001: unresolved external symbol "void __cdecl operator delete(void *)" ([email protected]@Z) 
error LNK2001: unresolved external symbol "void * __cdecl operator new(unsigned int)" ([email protected]@Z) 
error LNK2001: unresolved external symbol ___security_cookie 
error LNK2001: unresolved external symbol ___CxxFrameHandler3 
error LNK2001: unresolved external symbol @[email protected] 
error LNK2001: unresolved external symbol __RTC_CheckEsp 
error LNK2001: unresolved external symbol __RTC_Shutdown 
error LNK2001: unresolved external symbol __RTC_Shutdown 
error LNK2001: unresolved external symbol __RTC_InitBase 
error LNK2001: unresolved external symbol "const type_info::`vftable'" ([email protected]@[email protected]) 
error LNK2001: unresolved external symbol "public: virtual bool __thiscall Medium::isSource(void)const " ([email protected]@@UBE_NXZ) 
<more errors> 

ここに完全なダンプ:http://pastebin.com/4bVQAcdp


更新

すべてのライブラリのためのプロジェクトを作成するときに、私は「プリコンパイル済みヘッダー」オプションをオフにするので、私は、以前のプロジェクトをビルドすることができませんでした。ライブラリをmediaServerプロジェクトにリンクすると、VSはすべての機能を解決できませんでした。

「プリコンパイル済みヘッダー」オプションをチェックして再構築し、各* .cppファイルに#include "stdafx.h"を追加して動作させることができました。

Afterthought:mediaServerプロジェクトの[Precompiled header]オプションをオンにするだけでいいという気持ちがあります。あなたが試して成功したら教えてください。 ;-)


アップデート2

いいえ。静的ライブラリプロジェクトのそれぞれについて、プリコンパイル済みヘッダーを有効にする必要がありました。 〜200 * .cppファイルに#include "stdafx.h"を追加します。うん

+0

ビルドした* .libにリンクされていないように見えます。ランタイムライブラリの設定が間違っているか、不一致の使用か、RTCのチェックが追加されたかのように、 'delete'の行方不明が表示されます。 – Niall

+0

私が見逃したことはありますか? http://lists.live555.com/pipermail/live-devel/2012-January/014476.html – bot1131357

+0

これらの手順はあいまいです。「私はそれをすべて追加しました。それはうまくいきました」と幸運にも反対しているようですすべての設定をすべきである。それらはすべて静的ライブラリかdllのインポートライブラリですか? DLLの場合、関数は正しくエクスポートおよびインポートされます。同じランタイムライブラリフラグ( '/ MT'対'/MD')を一貫して使用していますか?プロジェクト全体でのランタイムセキュリティチェックは同じですか?キャラクターセットなど.... – Niall

答えて

2

更新
私はあなたの完全なダンプを見ていた。この最初のエラーに基づいて

1>UsageEnvironment.lib(HashTable.obj) : error LNK2001: unresolved external symbol "void __cdecl operator delete(void *)" ([email protected]@Z) 

、いままであなたがUsageEnviroment Libのためにコンパイルされたソース、delete演算子への参照を持っています関数。私の推測では、あなたが変更した正しいソースコードを持っていないか、 UsageEnvironment.hhファイルの内容を貼り付けることはできますか?


私は、私はちょうどそれが今朝働いてしまった、今、この権利を構築する上で作業することが起こって、あなたの要求ごとに、私はテストプログラム「MediaServerの」をまとめました。ここではいくつかの前提で動作していますが、静的ライブラリを正しく構築したと仮定しています。静的ライブラリを仮定

が、これはあなたが探して解決策である正しい:

を含める:

c:\Live555\BasicUsageEnvironment\include 
c:\Live555\liveMedia\include 
c:\Live555\UsageEnvironment\include; 
c:\Live555\groupsock\include 
$(IncludePath) 

のLibパス:

"*Insert path to your lib files here*"; 
$(LibraryPath) 

リンカ入力:

Ws2_32.lib 
groupsock.lib 
BasicUsageEnvironment.lib 
liveMedia.lib 
UsageEnvironment.lib 
libBasicUsageEnvironment.lib 
libgroupsock.lib 

あなたのソリューションフォルダは次のようになります。 は太字でファイルが存在することを確認してください。

Solution Explorer Screenshot

あなたのソースフォルダは、以下のファイルが必要です:あなたはあなたの中に含ま間違ったソースファイルを持っているように、あなたのエラーそのルックスに基づいて

**DynamicRTSPServer.cpp** 
**DynamicRTSPServer.hh** 
**live555MediaServer.cpp** 
mediaServer.vcxproj 
mediaServer.vcxproj.filters 
ReadMe.txt 
**rtcp_from_spec.c** 
**rtcp_from_spec.h** 
stdafx.cpp 
stdafx.h 
targetver.h 
**version.hh** 

enter image description here

MediaServerのをこれらの未解決の参照は、live555プロジェクトのtarファイルのどこにも表示されません。 http://live555.com/liveMedia/public/live555-latest.tar.gz

このソリューションが動作しない場合は、次のタブのためのプロジェクト設定のスクリーンショットを提供してくださいは: は、プロジェクトフォルダのリスティングのディレクトリ リンカ入力 ファイルが含まれています。

これが役立つかどうか教えてください。これがうまくいかない場合は、静的ライブラリの構築方法を調べる必要があります。私たちはあなたのコードのどこに外部参照が作成されているのか、それらの参照を下のリンクで参照されているlive555アーカイブには表示されないように除外する必要があることを確認する必要があります。