0

重複の可能性:
MFC アプリを Visual Studio 2010 から 2012 RC にコンパイルすると、LNK2038 が発生する

XPCOM Firefox アドオン プロジェクトを Visual Studio 2010 から Visual Studio 2012 に移動しています。プロジェクトを開くと、Visual Studio はプロジェクトで最新の C++ コンパイラを使用するかどうかを尋ねてきます。いいえと言うと、次のコンパイル エラーが発生します。

エラー 1 エラー MSB8020: Visual Studio 2010 (プラットフォーム ツールセット = 'v100') のビルド ツールが見つかりません。v100 ビルド ツールを使用してビルドするには、[プロジェクト] メニューをクリックするか、ソリューションを右クリックして、[VC++ プロジェクトの更新...] を選択します。Visual Studio 2010 ビルド ツールを使用してビルドするには、Visual Studio 2010 をインストールします。C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.Cpp.Platform.targets 42 5 FF (Visual Studio 2010)

はいと言った場合、xulrunner-sdk\lib ディレクトリにある xpcomglue_s_nomozalloc.lib に対して、次の 5 つのコンパイル エラーが発生します。

エラー LNK2038: '_MSC_VER' の不一致が検出されました: 値 '1600' が値 '1700' と一致しません

Visual Studio 2010 をインストールできません。Visual Studio 2012 を使用して Gecko を自分でコンパイルできると思いますが、それは大変な作業のようで、うまくいくかどうかはわかりません。Visual Studio 2012 で Firefox アドオンをコンパイルする最良の方法を教えてください。

4

1 に答える 1

1

バイナリの XPCOM コンポーネントをコンパイルするときは、Firefox 自体をコンパイルするのに使用したものと同じコンパイラを使用する必要があります。そうしないと、バイナリの互換性が得られません。現在、これは Visual C++ 10 を使用することを意味し、無料の Visual Studio Express 2010 またはその他の手段を使用します。

XPCOM コンポーネントの目的がネイティブ コードを実行することのみである場合は、代わりに通常の DLL をコンパイルし、それをjs-ctypes経由で呼び出すことを検討してください。その後、任意のコンパイラを使用できます - バイナリ互換性の制約はありません (これも一般的に推奨されます)。 Firefox のリリースごとに再コンパイルする必要がなくなったためです)。

于 2012-10-08T07:49:04.917 に答える