2013-03-28 5 views
8

私のプロジェクトでXMLファイルを解析するのにtinyxmlライブラリを使用しています。私はx64プラットフォームをターゲットにしようとすると私は、リンカエラーを取得して、ここにFOいずれかになります。Tinyxml - x64プラットフォームをターゲットにしたときのリンクエラー

エラー4エラーLNK2001:未解決の外部シンボル「プライベート:静的 構造体TiXmlString ::議員TiXmlString :: nullrep_」 (?私はtinyxmlのx64バージョンがインストールされていなかったことを考え出したが、私はx64プラットフォーム用のライブラリを構築しようとしたとき、私はこのエラーを得た:nullrep_ @ TiXmlString @@ 0URep 1 @ A)ClassThatUsesTinyXML.obj

更新 @ :

LNK1561: entry point must be defined 
+2

エラーの_ALL_を投稿してください。私はトップのどこかに、正しいライブラリが見つからないというエラーがあると賭けるでしょう。 64ビットライブラリをインストールしましたか? –

+0

いいえ、私は^^ 'しなかった。 x64プラットフォーム用のtinyxmlを作成しようとしましたが、できませんでした。ここでtinyxmlを構築するときに私が得たエラーは次のとおりです。 'エラー\t 1つの\tエラーLNK1561:エントリポイントが\tパスを定義する必要があります\ tinyxml_2_6_2 \ tinyxml \ LINK ' – Kira

+0

@JoachimPileborgあなたがコンパイルされている正確にどのような私の更新 – Kira

答えて

5

代わりx64 platformsためtinyxmlを構築し、プロジェクトにtinyxml.htinystr.hを追加するので、私はちょうど.cppファイルを含むすべてのライブラリファイルを追加し、今私はx64プラットフォームをターゲットにすることができ、ライブラリは、実際には、ときに私建設されていますプロジェクト全体を構築する。

+2

これはtinyxml共有ライブラリを実際には使用しません。静的なリンケージのいくつかの醜い形式です。新しいバージョンのtinyxmlを使用する場合は、アプリケーションを再コンパイルする必要があることに注意してください(ただし、それは頻繁に変更されますか?) –

3

tinyxmlがそのままの状態で共有ライブラリビルドをサポートしているようには見えません。

  1. オープンWindowsデスクトップのためのMSのVisual Studio Expressの2012年に提供SLNファイル、tinyxml.sln、:ここで

    は私がtinyxml 2.6.2のソースからのDLLを構築するために、その後の手順です。プロンプトが表示されたら古いプロジェクトファイルを新しい形式に変換することを選択します。 「ソリューション・プラットフォーム」から

  2. 、選択し、「Configuration Managerを...」
  3. 「アクティブソリューションプラットフォーム:」から「<新... >」
  4. を選択し、「タイプや新しいプラットフォームを選択します」を選択まだ選択されていない場合は "x64"。 "Win32"設定から設定をコピーしてください。 [OK]をクリックします。 [閉じる]をクリックして設定マネージャを終了します。
  5. ソリューションエクスプローラでtinyxmlプロジェクトを右クリックします。 [プロパティ]を選択します。
  6. 「構成:」で「すべての構成」を選択します。同様に、「プラットフォーム:」で「すべてのプラットフォーム」を選択します。
  7. 「構成プロパティー」→「一般」ページで、「構成タイプ」を「動的ライブラリー(.dll)」に変更します。 "ターゲット拡張子"を ".dll"に変更します。 OKをクリックして、tinyxml Properties Pagesダイアログを終了します。
  8. 「リリース」構成と「x64」プラットフォームを選択します。
  9. ソリューションエクスプローラでtinyxmlプロジェクトを右クリックし、[再構築]を選択します。 tinyxml_2_6_2\tinyxml\x64\Release

あなたがtinyxml.dllを見つけるでしょう、ないインポートライブラリ(tinyxml.lib)。これは、シンボルがエクスポートされないためです。 How do I build an import library (.lib) AND a DLL in Visual C++?

共有ライブラリのルートに移動する場合は、MSVC固有の__declspec(dllexport)修飾子で目的のシンボルをエクスポートする必要があります。 Symbol Visibility in Windowsを参照してください。

1

エラーは、ライブラリのコンパイルにTIXML_USE_STLを定義したときに発生しますが、ライブラリにリンクするソースには定義されていません。最終的には、ライブラリを使用するソースとは異なるコードでライブラリがコンパイルされます。

関連する問題