2010-11-22 15 views
1

私はC++にはかなり新しく、私が取り組んでいるプロジェクトにTagLib libraryを使うことを理解しようとしています。 Visual Studio 2010でWindows 7 64ビット版のアンマネージC++を使って作業しています。私はこれまでに外部の図書館を使ったことはありませんでしたので、私はこれについてどうやって行くのか非常に混乱しています。Visual Studio 2010でアンマネージコードのDLLを使用していますか?

this blog entry私はlibtaglib.aとtaglib.dllファイルを入手しました。私はthis SO questionのTagLibの使い方について説明しましたが、Visual StudioではなくQT Creatorを扱っています。そして、Visual Studioのために何が必要なのかを理解するのに十分な知識がありません。

ので、いくつかの質問:

  • は、アンマネージコードでこれを行うにはそれも可能ですか?
  • .aファイルの機能は正確には何ですか?
  • 最も重要なことに、私のプログラムでtaglib.dllを使用するにはどうすればいいですか?

私はこれを行う方法を探していましたが、私の大きな問題は、私が走っているものすべてが私の頭の上にあることです。詳細が必要な場合はお知らせください。どんな助けでも大歓迎です!ありがとう!

+0

マネージドC++コードのようなものはないと考えると、ここでは「管理されていない」種類の冗長性はありませんか? –

+2

@Billy、MicrosoftのマネージドC++またはC++/CLIを使用していましたが、まだそこにあるかどうかわかりません... –

+0

@Eli: "Managed Extensions for C++"または "C++/CLI" C++ではない(完全に別の言語です) –

答えて

4

私は正常に動作しているようです。私がしたことの概要を以下に示します。

1.)CMakeを使ってVisual Studioソリューションを生成しました。

2.)VSソリューションでタグプロジェクトを作成しようとしましたが、失敗しました。

3)ここで概説として、私はいくつかのソースファイルへの修正をした:http://old.nabble.com/taglib-fails-to-compile-with-MS-VC%2B%2B-2010-td29185593.html

4)私はリリースモードで再びタグプロジェクトを構築しました。今回は成功しました。

5.)結果のdll、def、libファイルをプロジェクトのソースファイルと同じディレクトリにコピーしました。私のプロジェクトの設定で、この完全に良い練習)

7)が、私は、ヘッダーとサブディレクトリを設定している場合、私は私のプロジェクトにサブディレクトリへのtaglibソースからヘッダファイルをコピーし

6)(わかりません追加のインクルードディレクトリとしてのファイル。

8.)dll、exp、libファイルをプロジェクトに追加するには、Add> Existing Itemをクリックします。

9. taglibのサンプルコードを追加してビルドしました。すべてが働いたので、私はそれを得たと思う。

DLLがリリースモードでビルドされているため、私のプロジェクトはリリースモードで実行する必要があったか、クラッシュしていました。私はDLLをデバッグモードでビルドされたものに置き換えた場合、私のプログラムをデバッグモードで実行できると推測していますが、これを試していません。

+1

+1問題の実際の解決方法:) –

3

Visual Studioでは、GCCに固有のライブラリ(これは拡張子が.aであるためわかります)を使用することはできません。 MSVCで使用するには、ソースからライブラリを構築する必要があります。これを済ませたら、ビルドプロセスから生成された.libをプロジェクトに追加するだけで問題なく動作します。 (それはあなたが動的リンクにコンパイルしたりしていないかどうかを必要.libだということに注意してください - MSVCの土地には関係ありません)

EDIT - TagLibの自分自身を見た後 -

コンパイルするためには、あなたはCMake build systemTagLib itselfを取得し、CMakeはあなたにビジュアルスタジオソリューションを提供する必要があります。このソリューションを使用すると、.lib.dllが必要になります。 TagLibはKDEライブラリなので、すべての作業がうまくいくためには、QTビットを作成する必要があるでしょう。しかし、私は図書館に特有の経験を持っていないので、ここで役立つものではありません。

+0

私はCMakeを使って、5つのプロジェクト(ALL_BUILD、INSTALL、tag、tag_c、およびZERO_CHECK)を含むVSソリューションを生成しました。 2つは正常に構築され、2つは失敗し、もう1つはスキップされます。ビルドにはタグプロジェクトだけが必要ですか?もしそうなら、それは失敗するものです。私はあなたがこの図書館で何の経験も持っていないことを知っていますが、尋ねることに害はありません。また、すべてが機能するためには、QTビットが必要であるということはどういう意味ですか? – shanet

+0

@ S201:申し訳ありませんが、私は本当に分かりません。 QtはすべてのKDEライブラリが構築されるライブラリ(http://qt.nokia.com/products/)です。私はもっ​​と使えなくてすみませます:( –

+0

あなたのお手伝いをしてくれてありがとうございました。今日はもう何時間も遊んでいて、私はそれをすべて整理したと思います。回答をいただきありがとうございます。 – shanet

1

.dllファイルがある場合は、(.libファイルを作成するために)ソースを再コンパイルする必要はありません。 dumpbin/exportsとlib(どちらもVisual Studioに付属しています)では、アプリケーションとリンクできるlibを作成できます。このリンクでは、あなたは良い説明を見ることができます:http://www.coderetard.com/2009/01/21/generate-a-lib-from-a-dll-with-visual-studio/

しかし、ビリーは、おそらくQTの他の部分がこのライブラリを使用する必要があります。

+0

Luisのおかげでありがとうございました。私はあなたが提供しているDLLを使ってlibファイルを生成しました。私の質問は今私が何をしているのですか?私はプロジェクトVSプロジェクトに追加しました。ライブラリのヘッダファイルをインクルードするのは正しいですか?私のVSプロジェクトと同じディレクトリにヘッダーファイルをコピーし、 "#include "を私のプログラムに入れるのは簡単ですか?上のBilly、このライブラリを使用するためにQTの他の部分を必要とすることはどういう意味ですか? – shanet

関連する問題